是否可以以 jdk8 的 stream 功能来实现以下功能,或者有其他的方案

2019 年 6 月 27 日
 guojxx

数据库查询的出来如下 {id:1,parent_id:0,name:'首页',sort_index:1}, {id:2,parent_id:0,name:'表格',sort_index:2}, {id:3,parent_id:2,name:'表 1',sort_index:1} {id:4,parent_id:2,name:'表 2',sort_index:2} {id:5,parent_id:4,name:'子表 1',sort_index:1} ... 测试数据,表为树状表,在 java 中查询出来为 List 对象

期望实现效果如下

{id:1,parent_id:0,name:'首页',sort_index:1} {id:2,parent_id:0,name:'表格',sort_index:2, children:[{{id:3,parent_id:2,name:'表 1',sort_index:1},{id:4,parent_id:2,name:'表 2',sort_index:2,children:[{id:5,parent_id:4,name:'子表 1',sort_index:1} ]}}]},

如何排序会效率比较高呢,各位大佬们。

3831 次点击
所在节点    Java
7 条回复
johnniang
2019 年 6 月 27 日
qwerthhusn
2019 年 6 月 27 日
直接 Collections.sort 不就行了
qwerthhusn
2019 年 6 月 27 日
自定义一个 Comparator
brust
2019 年 6 月 27 日
这个应该是可以的
但是写出来就看效率高低问题了
aguesuka
2019 年 6 月 27 日
不使用 stream 的话,先排序,然后转成 id:对象的 map,让后为每个对象找到父节点。这样的话 stream 只能当语法糖用
aguesuka
2019 年 6 月 27 日
先转成树在排序复杂度会更低
guojxx
2019 年 6 月 27 日
@johnniang get !!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/577831

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX