/**************解讀java.util.Collections 、java.util.Comparator************************/
對List進行排序
List<String> list = new ArrayList<String>();
list.add("ds");
list.add("cd");
list.add("ec");
list.add("gt");
Collections.sort(list);
for(String s : list){
System.out.println(s);
}
其中Collections.sort(list)是對List的進行排序的,查看sort方法:
public static <T extends Comparable<? super T>> void sort(List<T> list) {
Object[] a = list.toArray();
Arrays.sort(a);
ListIterator<T> i = list.listIterator();
for (int j=0; j<a.length; j++) {
i.next();
i.set((T)a[j]);
}
}
可以看出,此方法是通過把List轉換成一個Object[]的對象。然後使用Arrays的sort方法進行排序
最後把排序好的Object[]對象set到list中
Object[] o = list.toArray();
Arrays.sort(o);
for(int i=0;i<o.length;i++){
list.set(i, (String) o[i]);
}
for(String s : list){
System.out.println(s);
}
/********************擴展排序規則********************************/
--定義自己的類
MyObject.java文件:-------------------------------
public class MyObject{
String name;
int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
擴展Comparator compare方法:
class Mycomparator implements Comparator{
public int compare(Object o1,Object o2) {
MyObject p1=(MyObject)o1;
MyObject p2=(MyObject)o2;
int a=p1.getAge();
int b=p2.getAge();
if(a<b)
return 0;
else
return 1;
}
}
--測試方法
public static void main(String[] args){
ArrayList list = new ArrayList();
list.add(new MyObject("aa",28));
list.add(new MyObject("bb",23));
Comparator comp = new Mycomparator();
Collections.sort(list,comp);
}