V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
guojxx
V2EX  ›  Java

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

  •  
  •   guojxx · Jun 27, 2019 · 3406 views
    This topic created in 2502 days ago, the information mentioned may be changed or developed.

    数据库查询的出来如下 {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 replies    2019-06-27 10:32:10 +08:00
    qwerthhusn
        2
    qwerthhusn  
       Jun 27, 2019
    直接 Collections.sort 不就行了
    qwerthhusn
        3
    qwerthhusn  
       Jun 27, 2019
    自定义一个 Comparator
    brust
        4
    brust  
       Jun 27, 2019
    这个应该是可以的
    但是写出来就看效率高低问题了
    aguesuka
        5
    aguesuka  
       Jun 27, 2019 via Android
    不使用 stream 的话,先排序,然后转成 id:对象的 map,让后为每个对象找到父节点。这样的话 stream 只能当语法糖用
    aguesuka
        6
    aguesuka  
       Jun 27, 2019 via Android
    先转成树在排序复杂度会更低
    guojxx
        7
    guojxx  
    OP
       Jun 27, 2019
    @johnniang get !!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2587 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 12:38 · PVG 20:38 · LAX 05:38 · JFK 08:38
    ♥ Do have faith in what you're doing.