小工具知识网

当前位置: 首页 > 行业知识 > Java8新特性 | List多字段排序(含示例代码)

行业知识

Java8新特性 | List多字段排序(含示例代码)

2026-10-30 21:56:57 来源:互联网转载

可以利��� 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 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 多字段排序介绍完成。

上一篇:轻松下载崽崽相机,超详细教程来袭!

下一篇:TP5控制器访问Model数据详解,实现高效数据交互的秘诀!