希望能给段代码。。
我有个List里面保存的是int[]数组,现在想对里面的数组进行排序,有什么好的方法吗?
int[] iarray = new int[3];
----------------------------
12, 0, 1
11, 0, 2
19, 1, 1
18, 1, 2
16, 2, 1
15, 2, 2
13, 3, 1
10, 3, 2
10, 4, 1
首先是根据int[0]的值进行排序,由小到大,然后如果存在同样的值,那么根据int[1]的值进行小到大的排序
我有个List里面保存的是int[]数组,现在想对里面的数组进行排序,有什么好的方法吗?
int[] iarray = new int[3];
----------------------------
12, 0, 1
11, 0, 2
19, 1, 1
18, 1, 2
16, 2, 1
15, 2, 2
13, 3, 1
10, 3, 2
10, 4, 1
首先是根据int[0]的值进行排序,由小到大,然后如果存在同样的值,那么根据int[1]的值进行小到大的排序
public int compare(Object a,Object b){
int[] arrA=(int[])a;
int[] arrB=(int[])b;
int i=arrA[0]-arrB[0];
if(i!=0) return i;
return arrA[1]-arrB[1];
}
});
public static void main(String[] args) {
Set set = new TreeSet(new MyComparator());
set.add(...);
.
.
.
}
}
class MyComparator implements Comparator {
public int compare(Object o1, Object o2) {
int[] intarray1 = (int[]) o1;
int[] intarray2 = (int[]) o2;
for (int i = 0; i < intarray1.length; i++) {
if(intarray1[i] > intarray2[i])
return 1;
}
return 0;
}
}
Collections.sort(list,new Comparator(){
public int compare(Object a,Object b){
int[] arrA=(int[])a;
int[] arrB=(int[])b;
int i=arrA[0]-arrB[0];
if(i!=0) return i;
return arrA[1]-arrB[1];
}
});
public int compare(Object o1, Object o2) {
int[] intarray1 = (int[]) o1;
int[] intarray2 = (int[]) o2;
for (int i = 0; i < intarray1.length; i++) {
if(intarray1[i] > intarray2[i])
return 1;
}
return -1;
}
}是return -1
class MyComparator implements Comparator {
public int compare(Object o1, Object o2) {
int[] intarray1 = (int[]) o1;
int[] intarray2 = (int[]) o2;
for (int i = 0; i < intarray1.length; i++) {
if(intarray1[i] = intarray2[i])
continue;
}
return intarray1[i] - intarray2[i];
}
}Comparator 是个比较接口 定义2对象之间的大小关系
compare 是接口定义的比较方法 参数由2个对象组成 返回值为int型,
返回 >0 ,0 <0 分别代表 大于 等于 小于按照其中一个int[]的长度循环,先判断[0]位 如果intarray1[0] = intarray2[0] 则再比较[1]位,如果不相等 则返回他们之间的差来判断大小
public int compare(Object o1, Object o2) {
int[] intarray1 = (int[]) o1;
int[] intarray2 = (int[]) o2;
for (int i = 0; i < intarray1.length; i++) {
if(intarray1[i] = intarray2[i])
continue;
return intarray1[i] - intarray2[i];
}
return 0;
}
}