JAVA8——多重排序


CusPrm prm1 = new CusPrm();
prm1.setPrmName("小紅");
prm1.setFkCusMtId(3L);
CusPrm prm2 = new CusPrm();
prm2.setPrmName("張紅");
prm2.setFkCusMtId(5L);
CusPrm prm3 = new CusPrm();
prm3.setPrmName("bon");
prm3.setFkCusMtId(4L);
CusPrm prm4 = new CusPrm();
prm4.setPrmName("張紅");
prm4.setFkCusMtId(3L);
CusPrm prm5 = new CusPrm();
prm5.setPrmName("小非");
prm5.setFkCusMtId(3L);

List<CusPrm> list = new ArrayList<>();
list.add(prm1);
list.add(prm2);
list.add(prm3);
list.add(prm4);
list.add(prm5);
System.out.println(JSON.toJSONString(list));
//方式一:
list.sort(Comparator.comparing(CusPrm::getPrmName, (a,b) ->{
//第一順序:按字段拼音
return Collator.getInstance(Locale.CHINESE).compare(a, b);
}).thenComparing(CusPrm::getFkCusMtId, (a, b) ->{
//第二順序:按數字大小
return a<b?-1:1;
//按類型大小排序,再加反轉
}).thenComparingLong(CusPrm::getFkCusMtId).reversed()
);
//方式二:
Collections.sort(list, Comparator.comparing(CusPrm::getPrmName, (a,b) ->{
//第一順序:按字段拼音
return Collator.getInstance(Locale.CHINESE).compare(a, b);
}).thenComparing(CusPrm::getFkCusMtId, (a, b) ->{
//第二順序:按數字大小
return a<b?-1:1;
//按類型大小排序,再加反轉
}).thenComparingLong(CusPrm::getFkCusMtId).reversed()
);
System.out.println(JSON.toJSONString(list));
// list.sort(String.CASE_INSENSITIVE_ORDER); //忽略大小寫對list按首字母對字符串進行排序
//list.sort(Comparator.naturalOrder());//對list按首字母對字符串進行排序,對大小寫敏感

//方式三:

list.sort((a, b) ->{
return Collator.getInstance(Locale.CHINESE).compare(a.getPrmName(), b.getPrmName());
});

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM