對List進行排序

/**************解讀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);

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章