如何对下面的list中o[o]由大到小排序,并且排序后名字要对应和原来成绩对应,排序后返回一个ArrayList<object[]>
ArrayList<Object[]> list = new ArrayList<Object[]>();
Object[] o = new Object[2];
o[0] = 73;
o[1] ="张三";
list.add(o);Object[] o = new Object[2];
o[0] = 98;
o[1] ="李四";
list.add(o);Object[] o = new Object[2];
o[0] = 67;
o[1] ="王五";
list.add(o);
ArrayList<Object[]> list = new ArrayList<Object[]>();
Object[] o = new Object[2];
o[0] = 73;
o[1] ="张三";
list.add(o);Object[] o = new Object[2];
o[0] = 98;
o[1] ="李四";
list.add(o);Object[] o = new Object[2];
o[0] = 67;
o[1] ="王五";
list.add(o);
for(Object[] o : list){
System.out.println(o[0]+":"o[1]);
}
public int compare(Object o1, Object o2) {
Object[] a=(Object[]) o1;
Object[] b=(Object[]) o2;
if(Integer.valueOf(a[0].toString())>Integer.valueOf(b[0].toString())){
return 1;
}
return -1;
}});
public static void main(String[] args)
{
ArrayList <Object[]> list = new ArrayList <Object[]>();
Object[] o = new Object[2];
o[0] = 723;
o[1] ="张三";
list.add(o); Object[] o1 = new Object[2];
o1[0] = 98;
o1[1] ="李四";
list.add(o1); Object[] o2 = new Object[2];
o2[0] = 67;
o2[1] ="王五";
list.add(o2);
MyComparator mc = new MyComparator();
Collections.sort(list, mc);
for (Object[] objects : list)
{
System.out.println(objects[0]);
}
}
===============================================================
class MyComparator implements Comparator{
public int compare(Object o1, Object o2)
{
Object[] obj1 = (Object[])o1;
Object[] obj2 = (Object[])o2;
int v1 = Integer.valueOf(String.valueOf(obj1[0]));
int v2 = Integer.valueOf(String.valueOf(obj2[0]));
if(v1>v2)
{
return 1;
}
else if(v1<v2)
{
return -1;
}
return 0;
}
}
不过要用2个参数的,
第2个参数传递一个自己写的comparator接口,用来比较实际的object[]具体的lz自己琢磨琢磨吧,很简单good luck
java.util.Arrays.sort(XX);
Collections.sort(XX);这两个有,List 没有,所以是点不出来滴,呵呵,楼主你点辛苦了