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,
比较函数强行对某些对象 collection 进行整体排序。可以将 Comparator 传递给 sort 方法(如 Collections.sort),从而允许在排序顺序上实现精确控制。还可以使用 Comparator 来控制某些数据结构(如 TreeSet 或 TreeMap)的顺序。
上面那句是在api上面抄下来的。对这个类有疑问的也可以去看下jdk的api。我也是一知半解而已。
注意:在ComparableObjects类里面compare方法下面的a,b要是对象型数据才行也就是说如果是int的话是不可以的。
看下结果图:
本文出自 “Just do it” 博客,请务必保留此出处http://davenzeng.blog.51cto.com/3896952/1196545