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

2019-06-27 00:22:02 +08:00
 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} ]}}]},

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

2951 次点击
所在节点    Java
7 条回复
johnniang
2019-06-27 01:08:35 +08:00
qwerthhusn
2019-06-27 08:48:19 +08:00
直接 Collections.sort 不就行了
qwerthhusn
2019-06-27 08:48:38 +08:00
自定义一个 Comparator
brust
2019-06-27 09:05:52 +08:00
这个应该是可以的
但是写出来就看效率高低问题了
aguesuka
2019-06-27 09:07:25 +08:00
不使用 stream 的话,先排序,然后转成 id:对象的 map,让后为每个对象找到父节点。这样的话 stream 只能当语法糖用
aguesuka
2019-06-27 09:11:29 +08:00
先转成树在排序复杂度会更低
guojxx
2019-06-27 10:32:10 +08:00
@johnniang get !!

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

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

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

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

© 2021 V2EX