1. list多条件排序
List list=new ArrayList<User>();
User user1=new User(2021,new BigDecimal("201"),"jack");
User user2=new User(2021,new BigDecimal("456"),"sun");
User user3=new User(2020,new BigDecimal("1980"),"liwe");
User user4=new User(2020,new BigDecimal("23"),"like");
list.add(user1);
list.add(user2);
list.add(user3);
list.add(user4);
System.out.println(list);
list= (List) list.stream().sorted(Comparator.comparing(User::getYears).reversed().thenComparing( User::getMoney,Comparator.reverseOrder())).collect(Collectors.toList());
System.out.println(list);
2.list对象去重
注意:实体类要重写equals和hashcode方法
Person p1 = new Person(1l, "jack");
Person p2 = new Person(3l, "jack chou");
Person p3 = new Person(2l, "tom");
Person p4 = new Person(4l, "hanson");
Person p5 = new Person(5l, "胶布虫");
List<Person> persons = Arrays.asList(p1, p2, p3, p4, p5, p5, p1, p2, p2);
List<Person> personList = new ArrayList<>();
// 去重
persons.stream().forEach(
p -> {
if (!personList.contains(p)) {
personList.add(p);
}
}
);
System.out.println(personList);
2. list对象属性去重
注意:实体类要重写equals和hashcode方法
List<MongoUser> list=new ArrayList<>();
MongoUser mongoUser=new MongoUser();
mongoUser.setId("1");
mongoUser.setName("zhangsan");
mongoUser.setMobile("111111");
MongoUser mongoUser1=new MongoUser();
mongoUser1.setId("2");
mongoUser1.setName("zhangsan");
mongoUser1.setMobile("222");
list.add(mongoUser);
list.add(mongoUser1);
List<MongoUser> unique = list.stream().collect(
collectingAndThen(
toCollection(() -> new TreeSet<>(comparing(MongoUser::getName))), ArrayList::new)
);
System.out.println(unique);