wjbk

导航

java8对汉字排序

//1、lambda表达式按照单个汉字属性进行排序
personList.sort((o1, o2) -> {
   Collator instance = Collator.getInstance(Locale.CHINA);
   return instance.compare(o1.getName(),o2.getName());
});

//2、定义独立的lambda表达式,实现多属性排序,先按照汉字升序排序,汉字相同则按照年龄降序排序 
Comparator<Person> personComparator = (Person o1, Person o2) -> { 
  Collator instance = Collator.getInstance(Locale.CHINA); 
  return instance.compare(o1.getName(), o2.getName()); 
}; 
personList.sort(
  personComparator.thenComparing(Person::getAge, Comparator.reverseOrder())
);


//3、多条件排序
  List<TestInfo> sortList = testInfos.stream().sorted(
  // 以年龄排序,年龄高的在前
  Comparator.comparing(TestInfo::getAge, Comparator.reverseOrder())
  // 再以月份排序,月份高的在前
  .thenComparing(TestInfo::getOnMonth, Comparator.reverseOrder())
  // 再以评分排序,评分高的在前
  .thenComparing(TestInfo::getScore, Comparator.reverseOrder())).collect(Collectors.toList()

);


 
 

 

posted on 2022-11-29 10:21  wjbk  阅读(1318)  评论(0)    收藏  举报