可以利用 List 的
sort
方法进行排序,Comparator.comparing
可以指定排序字段,thenComparing
可以继续指定其他的排序字段。
默认使用正序排列,如果想倒序可以使用Comparator.reverseOrder()
指定。
下面是示例代码:
创建一个内部类 SortTest
@Getter
@Setter
@AllArgsConstructor
static 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
确定是按照我们定义的规则进行排序的。文章来源:https://www.toymoban.com/news/detail-521297.html
S2 9 5 5
S1 7 3 7
S7 5 7 1
S3 5 7 4
S9 5 7 7
S6 5 6 1
S8 5 3 7
S5 4 5 4
S4 1 5 4
至此 Java8 的 List 多字段排序介绍完成。文章来源地址https://www.toymoban.com/news/detail-521297.html
到了这里,关于Java8新特性 | List多字段排序(含示例代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!