今天,公司里有一個萌萌的妹子問我java 中的comparator是怎麼回事。參數分別是什麼,返回值又是什麼,為此,我寫了一個簡單的程式告訴了她: 執行結果: 通過這個執行結果,我們可以看出一下幾點: 以compare(a1, a2)為例: 1)其中a1 是要添加的數數據, a2是從集合中取出來的與 ...
今天,公司里有一個萌萌的妹子問我java 中的comparator是怎麼回事。參數分別是什麼,返回值又是什麼,為此,我寫了一個簡單的程式告訴了她:
public static void main (String[] args){ List<String> list = new ArrayList<String>(Arrays.asList(new String[]{"1", "a", "222", "221","221"}));
Collections.sort(list,new Comparator(){
public int compare(String str1, String str2){ int r = str1.compareTo(str2); System.out.println(str1 + "-" + str2 +"=" + r); return r; } }) ; System.out.println(list.toString()); }
執行結果:
list
a-1=48 [1, a] 222-a=-47 222-a=-47 221-1=1 [1, 222, a] 221-222=-1 221-1=1 [1, 221, 222, a] 221-221=0 [1, 221, 222, 222, a] [1, 221, 221, 222, a];
通過這個執行結果,我們可以看出一下幾點:
以compare(a1, a2)為例:
1)其中a1 是要添加的數數據, a2是從集合中取出來的與a1比較的數據
2) 返回值 >0時,放後面。
返回值<0 時,放前面。
3)集合預設是升序排序的。如果想要降序排序,你在比較時,應該是 a2 - a1 (也就是拿第二個參數跟第一個比較)。
另外:
4)List 在排序時,採用的是二分法排序。