对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);

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值