2010年1月6日 星期三

實做Comparator的方法

如果使用 ArrayList 來儲存自定義的 Object
例如

ArrayList<node> al = new ArrayList<node>();

(<node> 指的是 ArrayList 存放的物件是 node 型態的物件)
這時想用 Collections.Sort(al) 來排序這個 ArrayList 就會出錯
程式會不知道該怎麼執行排序~
此時就必須實做 Comparator 這個 Interface,教 Collections 要怎麼做排序。


先新增一個 Class,內容像是這樣:

Class newComparator implements Comparator {
 public int compare(Object o1,Object o2) { //實做Comparator.compare
  node n1 = (node)o1; //將引入的物件轉換型別為自定義的物件
  node n2 = (node)o2;

  if(n1.getValue > n2.getValue) return 1;
  else if(n1.getValue < n2.getValue) return -1;
  else return 0;
 }
}


然後主程式中就可以直接做 Sort,並且引入這個自定義的 Comparator
就可以對自定義的物件們針對特定欄位做排序了。
Collections.Sort(al, new newComparator);

沒有留言: