欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

给集合中的元素(实体类对象)按照某个属性进行排序

程序员文章站 2022-07-12 13:51:36
...
List<SysModule> sysModuleList = sysModuleMapper.getModulesByUserId(userId);
        List<SysModule> sysPmoduleList=sysModuleList.stream().filter
                (sysModule -> "0".equals(sysModule.getModule_pid())).collect(Collectors.toList());
        for (SysModule sysModule:sysPmoduleList) {
            List<SysModule> collect = sysModuleList.stream().filter
                    (sysModule1 -> sysModule1.getModule_pid().equals(sysModule.getModule_id())).collect(Collectors.toList());
            sysModule.setSysModuleList(collect);
        }

上图通过拉姆达表达式(jdk1.8新特性),可以将一级Module以及一级下的二级ModulesysModuleList遍历抽取出来。具体细节上篇博文已讲,源码的话博主也没有看,很伤心。

那么下面我们讲一下如何对集合中的元素进行排序,因为在开发的过程中少不了对元素进行排序。就拿上一个一级集合(sysPmoduleList)举例子。

 for (SysModule sysModule:sysPmoduleList) {
            List<SysModule> sysModuleList1 = sysModule.getSysModuleList();
                Collections.sort(sysModuleList1, new Comparator<SysModule>() {
                @Override
                public int compare(SysModule o1, SysModule o2) {
                    return o1.getSortcode().compareTo(o2.getSortcode());
                }
                @Override
                public boolean equals(Object obj) {
                    return false;
                }
            });
            sysModule.setSysModuleList(sysModuleList1);
        }

        Collections.sort(sysPmoduleList, new Comparator<SysModule>() {
            @Override
            public int compare(SysModule o1, SysModule o2) {
                return o1.getSortcode().compareTo(o2.getSortcode());
            }
            @Override
            public boolean equals(Object obj) {
                return false;
            }
        });
        return sysPmoduleList;

上面意思是说,先遍历一级模块,然后得到每一个一级模块的二级模块(一级模块的一个属性),在对二级模块进行遍历,根据二级模块sortCode进行排序,然后将二级模块赋值给一级模块的属性,依次进行。

注意后面还是遍历一级模块,这次是根据一级模块的sortCode进行排序。最后return. 这次操作是不仅将一级模块根据sortCode进行排序,同时也将一级模块的属性(二级模块的集合)根据sortCode进行排序。

这辈子坚持与不坚持都不可怕,怕的是独自走在坚持的道路上!!!
欢迎加入技术群聊

给集合中的元素(实体类对象)按照某个属性进行排序