java中使用sort()對ArrayList進行排序
阿新 • • 發佈:2019-02-02
java中的ArrayList需要通過collections類的sort方法來進行排序
如果想自定義排序方式則需要有類來實現Comparator介面並重寫compare方法
呼叫sort方法時將ArrayList物件與實現Commparator介面的類的物件作為引數
舉個例子:
package book.arrayset; import java.util.Comparator; /** * 整數比較器,將整數按降序排列 */ class MyIntComparator implements Comparator{ /** * o1比o2大,返回-1;o1比o2小,返回1。 */ public int compare(Object o1, Object o2) { int i1 = ((Integer)o1).intValue(); int i2 = ((Integer)o2).intValue(); if (i1 < i2){ return 1; } if (i1 > i2){ return -1; } return 0; } } //上面的為比較的函式實現,下面真正的新增資料, //通過呼叫上面的比較函式實現自定義排序的功能 package book.arrayset; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * 對List中的元素排序 */ public class SortList { public static void output(List list){ if (list == null){ return; } for (int i=0; i<list.size(); i++){ System.out.print(list.get(i).toString() + " "); } System.out.println(); } public static void main(String[] args) { List list = new ArrayList(); list.add(new Integer(5)); list.add(new Integer(8)); list.add(new Integer(1)); list.add(new Integer(3)); list.add(new Integer(2)); list.add(new Double(3.1));
<span style="font-family: Arial, Helvetica, sans-serif;">System.out.println("list開始狀態");</span>
SortList.output(list);
//Collections.sort <span style="color:#ff0000;">用預設比較器排列list的元素</span>
Collections.sort(list);
System.out.println("list被預設比較器排序後的狀態");
SortList.output(list);
//用自定義方法按降序排列</span> Collections.sort(list, new MyIntComparator()); System.out.println("list被自定義比較器排序後的狀態"); SortList.output(list); } }
因此,對於任意自定義類的物件,當儲存在集合類容器中後,如果需要對它們進行排序,需要自己提供適應於自定義類的比較器,自定義比較器必須實現Comparator介面。然後採用Collections.sort(list, comparator);方法對容器進行排序。</span>