可以利用 List 的 sort 方法进行排序,Comparator.comparing 可以指定排序字段,thenComparing 可以继续指定其他的排序字段。 默认使用正序排列,如果想倒序可
可以利用 List 的
sort
方法进行排序,Comparator.comparing
可以指定排序字段,thenComparing
可以继续指定其他的排序字段。
默认使用正序排列,如果想倒序可以使用Comparator.reverseOrder()
指定。
下面是示例代码:
创建一个内部类 SortTest
@Getter@Setter@AllArgsConstructorstatic class SortTest { private String name; private int a; private int b; private int c;}
添加main
方法,声明一个List,并往其中添加数据,再按规则进行排序(先按a倒序排列、再按b倒序排列、最后按c正序排列),最后输出。
public static void main(String[] args) { // 测试List多属性排序 List<SortTest> list = new ArrayList<>(); list.add(new SortTest("S1", 7, 3, 7)); list.add(new SortTest("S2", 9, 5, 5)); list.add(new SortTest("S3", 5, 7, 4)); list.add(new SortTest("S4", 1, 5, 4)); list.add(new SortTest("S5", 4, 5, 4)); list.add(new SortTest("S6", 5, 6, 1)); list.add(new SortTest("S7", 5, 7, 1)); list.add(new SortTest("S8", 5, 3, 7)); list.add(new SortTest("S9", 5, 7, 7)); // 先按a倒序排列、再按b倒序排列、最后按c正序排列 list.sort(Comparator.comparing(SortTest::getA, Comparator.reverseOrder()) .thenComparing(SortTest::getB, Comparator.reverseOrder()) .thenComparing(SortTest::getC)); for (SortTest sortTest : list) { System.out.println(sortTest.getName() + "\t" + sortTest.getA() + "\t" + sortTest.getB() + "\t" + sortTest.getC()); }}
输出结果:从输出结果也可以看出,List
确定是按照我们定义的规则进行排序的。
S2955S1737S7571S3574S9577S6561S8537S5454S4154
至此 Java8 的 List 多字段排序介绍完成。
来源地址:https://blog.csdn.net/gozhuyinglong/article/details/128255051
--结束END--
本文标题: Java8新特性 | List多字段排序(含示例代码)
本文链接: https://lsjlt.com/news/405527.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-01
2024-04-03
2024-04-03
2024-01-21
2024-01-21
2024-01-21
2024-01-21
2023-12-23
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0