Java Comparator接口排序用法,詳細介紹可以閱讀這個鏈接的內容:https://www.cnblogs.com/shizhijie/p/7657049.html
對於 public int compare(Object arg0, Object arg1)的理解
1 //數組排序 2 String[] str = new String[5]; 3 Arrays.sort(str, new Comparator<String>() { 4 @Override 5 public int compare(String o1, String o2) { 6 // TODO Auto-generated method stub 7 return 0; 8 } 9 }); 10 //List集合排序 11 ArrayList<String> list = new ArrayList<String>(); 12 Collections.sort(list, new Comparator<String>() { 13 @Override 14 public int compare(String o1, String o2) { 15 // TODO Auto-generated method stub 16 return 0; 17 } 18 });
上述代碼中重寫了Comparator接口中的compare()方法,有兩個參數自定義為 o1 和 o2,默認返回 0,可修改方法體中的內容,返回不同的參數值(整型)
如果返回 1 說明o1 > o2 如 2 1
如果返回 0 說明o1 = o2 如 cc cc
如果返回 -1 說明o1 < o2 如 6 7
也可以調用compareTo()方法在return時對參數進行比較:
1 String[] str = new String[5]; 2 Arrays.sort(str, new Comparator<String>() { 3 @Override 4 public int compare(String o1, String o2) { 5 // TODO Auto-generated method stub 6 return o1.compareTo(o2); 7 } 8 });
compareTo()方法返回值為 int 類型,比較兩個值,如:o1.compareTo(o2)。返回1,0,-1同 compare() 方法的參數比較一樣。
比較方法:
(1) 字符串與對象進行比較
(2) 按字典順序比較兩個字符串
比較過程:
先比較對應字符的大小(ASCII碼順序),如果第一個字符和參數的第一個字符不等,結束比較,返回他們之間的差值,如果第一個字符和參數的第一個字符相等,則以第二個字符和參數的第二個字符做比較,以此類推,直至得到最終結果或者其中一個參數結束。