Java中java.util.Comparator介面簡介
阿新 • • 發佈:2018-11-12
概念:
java.util.Comparator介面為一個比較器介面,它提供了一個自定義比較規則的方法,可以根據需要對不支援比較的物件按自己的邏輯進行排序,一般與Collections.sort()方法一起使用。
應用場景:
為字串、物件等無法直接比較大小排序的物件提供比較邏輯,進而實現排序。或者按自己需要的邏輯進行排序。
案例程式碼:
List<String> list = new ArrayList<>(); Collections.addAll( list, "fda1","sfc5","sdd8","asg9","fdf3", "sdu5","fdr4","dfz3","sss5"); System.out.println(list); Collections.sort(list);//排序 System.out.println(list);
如果直接排序,則會根據首字母進行排序,排序結果為[asg9, dfz3, fda1, fdf3, fdr4, sdd8, sdu5, sfc5, sss5]、
如果我們給Collections.sort()方法增加比較器,比較器的泛型為需要比較的物件的型別,程式碼如下。
Collections.sort(list, new Comparator<String>() { /* * o1和o2比大小 * o1大,正數 * o1小,負數 * 相同,0 */ @Override public int compare(String o1, String o2) { //取用字串的第三個字母進行比較 int a = o1.charAt(2); int b = o2.charAt(2); //return a-b; if(a<b) { return -1; } else if(a>b) { return 1; } else { return 0; } } }); System.out.println(list);
則會根據字串的第三個字元進行排序,排序結果為[fda1, sfc5, sdd8, fdf3, asg9, fdr4, sss5, sdu5, dfz3]