1. 第一種方式使用 Collections 工具類中的 sort() 方法
順便介紹Collections工具類的sort()方法:
參數不同: 1 . void sort(List list),按自然排序的升序排序
2. void sort(List list, Comparator c);定制排序,由Comparator控制排序邏輯
public class Test { public static void main(String[] args) { List list1 = new ArrayList(); list1.add("4"); list1.add("2"); list1.add("34"); list1.add("43"); list1.add("55"); List list2 = new ArrayList(); list2.add(4); list2.add(2); list2.add(34); list2.add(43); list2.add(55); //1.由於添加的元素具有可比較性,所以不用實現自然排序 倘若加上 list1.add(5201314); 會報 類型轉換異常 ClassCastException Collections.sort(list1); Collections.sort(list2); System.out.println(list1); // [2, 34, 4, 43, 55] System.out.println(list2); // [2, 4, 34, 43, 55]
**
注意: TMD 越挖越深,很明顯上面結果不一樣,因為:Integer和String 底層代碼compareTo()方法不一樣。 **
/* Integer類的底層代碼:比較的是值 public int compareTo(Integer anotherInteger) { return compare(this.value, anotherInteger.value); } String類的底層代碼:比較的結果我之前在String常用類中介紹過。 public int compareTo(String anotherString) { int len1 = value.length; int len2 = anotherString.value.length; int lim = Math.min(len1, len2); char v1[] = value; char v2[] = anotherString.value; int k = 0; while (k < lim) { char c1 = v1[k]; char c2 = v2[k]; if (c1 != c2) { return c1 - c2; } k++; } return len1 - len2; }
2.直接使用list.sort()方法,傳入實現Comparator接口的實現類的實例, 下面 為了省事直接傳入 匿名內部類
public static void main(String[] args) { List<String> list = new ArrayList(); list.add("4"); list.add("2"); list.add("34"); list.add("43"); list.add("55"); list.sort(new Comparator<String>(){ public int compare(String o1,String o2){ return o1.compareTo(o2); } }); System.out.println(list); //[2, 34, 4, 43, 55]