V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
guojxx
V2EX  ›  Java

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

  •  
  •   guojxx · 2019-06-27 00:22:02 +08:00 · 2899 次点击
    这是一个创建于 1988 天前的主题,其中的信息可能已经有所发展或是发生改变。

    数据库查询的出来如下 {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} ]}}]},

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

    7 条回复    2019-06-27 10:32:10 +08:00
    qwerthhusn
        2
    qwerthhusn  
       2019-06-27 08:48:19 +08:00
    直接 Collections.sort 不就行了
    qwerthhusn
        3
    qwerthhusn  
       2019-06-27 08:48:38 +08:00
    自定义一个 Comparator
    brust
        4
    brust  
       2019-06-27 09:05:52 +08:00
    这个应该是可以的
    但是写出来就看效率高低问题了
    aguesuka
        5
    aguesuka  
       2019-06-27 09:07:25 +08:00 via Android
    不使用 stream 的话,先排序,然后转成 id:对象的 map,让后为每个对象找到父节点。这样的话 stream 只能当语法糖用
    aguesuka
        6
    aguesuka  
       2019-06-27 09:11:29 +08:00 via Android
    先转成树在排序复杂度会更低
    guojxx
        7
    guojxx  
    OP
       2019-06-27 10:32:10 +08:00
    @johnniang get !!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6026 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 02:10 · PVG 10:10 · LAX 18:10 · JFK 21:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.