Java8 List.stream().sorted 根据对象元素排序
1、写在前面Stream 中文称为 “流”,通过将集合转换为这么一种叫做 “流” 的元素序列,通过声明性方式,能够对集合中的每个元素进行一系列并行或串行的操作!如果流中的元素的类实现了 Comparable 接口,即有自己的排序规则,那么可以直接调用 sorted() 方法对元素进行排序!2、stream().sorted 操作总结@Datastaticclass User {private St
·
1、写在前面
Stream 中文称为 “流”,通过将集合转换为这么一种叫做 “流” 的元素序列,通过声明性方式,能够对集合中的每个元素进行一系列并行或串行的操作!
如果流中的元素的类实现了 Comparable 接口,即有自己的排序规则,那么可以直接调用 sorted() 方法对元素进行排序!
2、stream().sorted 操作总结
@Data
static class User {
private String name;
//age
private int age;
//分数
private double fraction;
public User(String name, int age, double fraction) {
this.name = name;
this.age = age;
this.fraction = fraction;
}
}
public static void main(String[] args) {
List<User> userList = new ArrayList<>();
userList.add(new User("a1", 22, 2.2));
userList.add(new User("a2", 22, 2.5));
userList.add(new User("a3", 40, 2.7));
userList.add(new User("a4", 45, 2.8));
//返回 对象集合以UsergetAge升序排序:年龄 --默认升序
userList.stream().sorted(Comparator.comparing(User::getAge));
//返回 对象集合以UsergetAge降序排序 ===这里写在前面 和写在后面要看清楚,弄明白
userList.stream().sorted(Comparator.comparing(User::getAge).reversed()); //排序结果后再排序,
userList.stream().sorted(Comparator.comparing(User::getAge, Comparator.reverseOrder()));//是直接进行排序
//返回 对象集合以UsergetAge升序排序:**年龄并返回前n个元素** --默认升序 ==下面同样写法
userList.stream().sorted(Comparator.comparing(User::getAge)).limit(2);
//返回 对象集合以UsergetAge升序排序:**年龄并去除前 n 个元素** --默认升序 ==下面同样写法
userList.stream().sorted(Comparator.comparing(User::getAge)).skip(2);
//返回 对象集合以UsergetAge升序 getFraction升序
userList.stream().sorted(Comparator.comparing(User::getAge).thenComparing(User::getFraction));
//先以getAge升序,升序结果进行getAge降序,再进行getFraction升序
userList.stream().sorted(Comparator.comparing(User::getAge).reversed().thenComparing(User::getFraction));
//先以getAge降序,再进行getFraction升序
userList.stream().sorted(Comparator.comparing(User::getAge, Comparator.reverseOrder()).thenComparing(User::getFraction));
//先以getAge升序,升序结果进行getAge降序,再进行getFraction降序
userList.stream().sorted(Comparator.comparing(User::getAge).reversed().thenComparing(User::getFraction, Comparator.reverseOrder()));
//先以getAge降序,再进行getFraction降序
userList.stream().sorted(Comparator.comparing(User::getAge, Comparator.reverseOrder()).thenComparing(User::getFraction, Comparator.reverseOrder()));
//先以getAge升序,升序结果进行getAge降序,再进行getFraction升序,结果进行getAge降序getFraction降序
userList.stream().sorted(Comparator.comparing(User::getAge).reversed().thenComparing(User::getFraction).reversed());
//先以getAge升序,再进行getFraction降序
userList.stream().sorted(Comparator.comparing(User::getAge).thenComparing(User::getFraction, Comparator.reverseOrder()));
}
更多推荐
所有评论(0)