1. 程式人生 > >java中使用sort()對ArrayList進行排序

java中使用sort()對ArrayList進行排序

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>