// 创建并初始化 List List<Person> list = new ArrayList<Person>() {{ add(new Person(1, 30, "张三")); add(new Person(2, 20, "李四")); add(new Person(3, 40, "王五")); }}; // 使用 Stream 排序 list = list.stream().sorted(Comparator.comparing(Person::getAge).reversed()) .collect(Collectors.toList());
其中 reversed() 表示倒序的意思,如果不使用此方法则是正序。
扩展:排序字段为 null
使用 Stream 进行排序时,如果排序的字段出现 null 值就会导致异常发生,具体示例如下:
// 按照[年龄]排序,但年龄中有一个 null 值 list = list.stream().sorted(Comparator.comparing(Person::getAge, Comparator.nullsFirst(Integer::compareTo)).reversed()) .collect(Collectors.toList());
Comparator.nullsFirst 表示将排序字段中的 null 值放到集合最前面,如果想要将 null 值放到集合最后面可以使用 Comparator.nullsLast。