List泛型数组排序

List泛型排序,很多地方要用到排序,有算法的排序,也有已经组装好的类调用。对数组的,对集合的排序相信大家都不陌生。记录下刚刚花了差不多一个小时才做出来的一个对List<T>的排序,大部分时间都是用在看API上面了,代码不多。下面是代码:

List<Object[]> list=new ArrayList<Object[]>();
        Object[] obj1 = new Object[2];
        Object[] obj2 = new Object[2];
        Object[] obj3 = new Object[2];
        obj1[0]=105;
        obj1[1]="A";
        obj2[0]=88;
        obj2[1]="B";
        obj3[0]=199;
        obj3[1]="C";
        list.add(obj1);
        list.add(obj2);
        list.add(obj3);
        System.out.println("排序前:");
        for(int i=0;i<list.size();i++) {
            System.out.println(list.get(i)[1]+"的值是:"+list.get(i)[0]);
        }
                          
        ComparableObjects c=new ComparableObjects();
        Collections.sort(list,c);
        System.out.println("排序后:");
        for(int j=0;j<list.size();j++) {
            System.out.println(list.get(j)[1]+"的值是:"+list.get(j)[0]);
        }

 

这个是对List<Object[]>的一个排序,泛型大家都是可以随便修改的,由于我的项目中使用到的是一个对象数组,所以就用这个做为例子,最主要的是Collections.sort(list,c);这行。Collections提供一个sort方法,建议大家去看下api,这个有好几个方法使用的,这里只是一种。

相信大家也看到当中有一个ComparableObjects这个类,下面也来看下这个类里面有什么东西吧

 

import java.util.Comparator;
public class ComparableObjects implements Comparator<Object[]> {
    /**
     * 数组里某字段排序
     */
    public int compare(Object[] o1, Object[] o2) {
        // TODO Auto-generated method stub
        Integer a=(Integer) o1[0];
        Integer b=(Integer) o2[0];
        int flag = a.compareTo(b);
        return flag;
    }
}

 

上面实现的是一个JAVA自带的Comparator接口,
api的解释是:比较函数强行对某些对象 collection 进行整体排序。可以将 Comparator 传递给 sort 方法(如Collections.sort),从而允许在排序顺序上实现精确控制。还可以使用 Comparator 来控制某些数据结构(如TreeSet  TreeMap)的顺序。

如果大家有时间而且想多了解的话可以去看下api,有什么收获的话也可以在下面评论一起来讨论的。看下结果图:

 

 

posted on 2013-05-13 15:02  仗剑天涯梦  阅读(727)  评论(0编辑  收藏  举报