今天开发中遇到一个需求,对组装成的List按某个字段进行排序,刚好就总结了一下List排序的集中方法,记录一下
项目中有一个SysFiled类,其中有个排序字段seq,使用该字段进行排序
hasFileds是需要排序的原始集合
使用Collections类的sort()方法进行匿名内部类排序
-
实现Comparator类的compare接口进行排序
Collections.sort(hasFileds, new Comparator<SysFiled>() { @Override public int compare(SysFiled o1, SysFiled o2) { return o1.getSeq() - o2.getSeq(); } });
-
简化为Lambda表达式:
Collections.sort(hasFileds, (o1, o2) -> o2.getSeq() - o1.getSeq());
-
使用方法引用
// 升序 Collections.sort(hasFileds, Comparator.comparingInt(SysFiled::getSeq)); // 降序 Collections.sort(hasFileds, Comparator.comparingInt(SysFiled::getSeq).reversed());
Java8以上可以使用stream进行排序
会生成一个新的List
hasFileds = hasFileds.stream().sorted(Comparator.comparingInt(SysFiled::getSeq)).collect(Collectors.toList());
联系方式
作者:永夜
邮箱:Evernight@aliyun.com
以上内容有不正确的地方烦请指正!🙏🙏🙏