有兩種方式, 一種是採用內建排序方式, 一種是自訂排序方式,
以下透過範例, 針對這兩種方式, 進行說明 :
範例 1 (內建排序: 先大寫字母排序, 再小寫字母排序) :
程式碼
List list = new ArrayList(); // 增加 List 元素 list.add( "a" ); list.add( "x" ); list.add( "K" ); list.add( "B" ); list.add( "y" ); // List 排序 Collections.sort( list ); // 顯示結果 for( Object obj : list ) System.out.println( obj ); B K a x y
範例 2 (自訂排序: 不分大小寫, 由小到大排序) :
程式碼
List list = new ArrayList(); // 增加 List 元素 list.add( "a" ); list.add( "x" ); list.add( "K" ); list.add( "B" ); list.add( "y" ); // List 自訂排序 Collections.sort( list, new Comparator<Object>(){ public int compare( Object l1, Object l2 ) { // 回傳值: -1 前者比後者小, 0 前者與後者相同, 1 前者比後者大 return l1.toString().toLowerCase().compareTo(l2.toString().toLowerCase()); } }); // 顯示結果 for( Object obj : list ) System.out.println( obj ); a B K x y
範例 3 (自訂排序: 撲克數字由小到大排序, 相同數字, 則比花色由小到大) :
程式碼
List<Integer> list = new ArrayList<Integer>(); // 增加 List 元素 list.add(10); // 梅花 J list.add(38); // 紅心 K list.add(12); // 梅花 K list.add(28); // 紅心 3 list.add(15); // 方塊 3 list.add(20); // 方塊 8 list.add(40); // 黑桃 2 list.add(0); // 梅花 A list.add(23); // 方塊 J list.add(26); // 紅心 A // List 自訂排序 Collections.sort( list, new Comparator<Integer>(){ public int compare( Integer l1, Integer l2 ) { // 回傳值: -1 前者比後者小, 0 前者與後者相同, 1 前者比後者大 if( l1%13 < l2%13 ) // 數字比大小 return -1; else if( l1%13 > l2%13 ) // 數字比大小 return 1; else { if( l1/13 < l2/13 ) // 相同數字, 比花色大小 return -1; else return 1; } } }); // 顯示結果 for( Integer obj : list ) System.out.println( obj + " = 數字 " + (obj%13+1) + ", 花色 " + (obj/13) ); 0 = 數字 1, 花色 0 26 = 數字 1, 花色 2 40 = 數字 2, 花色 3 15 = 數字 3, 花色 1 28 = 數字 3, 花色 2 20 = 數字 8, 花色 1 10 = 數字 11, 花色 0 23 = 數字 11, 花色 1 12 = 數字 13, 花色 0 38 = 數字 13, 花色 2
以上, 參考看看囉.