arraylist中是一个自定义的数据结构:
数据结构是这样的,
id 类型 数据1 数据2
01 天 1 2
02 天 2 0
03 地 1 1
04 天 4 3
05 人 1 2
06 人 1 0
07 地 1 2
08 天 2 0 我的问题是:如何先按类型再按ID,甚至再按数据1、数据2排序给这个list排序,有建议的朋友都有份。
数据结构是这样的,
id 类型 数据1 数据2
01 天 1 2
02 天 2 0
03 地 1 1
04 天 4 3
05 人 1 2
06 人 1 0
07 地 1 2
08 天 2 0 我的问题是:如何先按类型再按ID,甚至再按数据1、数据2排序给这个list排序,有建议的朋友都有份。
public class Test_Comparator { public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
for(int i = 10; i >= 0; i--) {
list.add(i);
}
@SuppressWarnings("unused")
Comparator<Integer> comparator = new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
// TODO Auto-generated method stub
return o1 > o2 ? 1 : -1;
}
};
Collections.sort(list,comparator);
for(int a : list) {
System.out.println(a);
}
}
}
没有定死,只是不同级别的优先级排序。在id的基础上在排序,id不是数据库的表。
我也认为在ID的基础上 ID没重复的 那就不用排了 肯定已经确定了顺序
import java.util.*;class MyClass{
String name;
String age;
String sex;
MyClass(String name,String age,String sex){
this.name=name;
this.age=age;
this.sex=sex;
}
public String toString(){
return "Name: "+name+" Age: "+age+" Sex: "+sex;
}
}public class Test2{
public static void main(String[] args){
ArrayList<MyClass> li=new ArrayList<MyClass>();
li.addAll(Arrays.asList(new MyClass("zs 张三","20","男"),
new MyClass("ls 李四","20","女"),
new MyClass("ls 李四","23","男"),
new MyClass("zs 张三","20","女"),
new MyClass("ls 李四","19","女"),
new MyClass("ww 王五","20","男"),
new MyClass("ww 张三","19","女")
));
System.out.println("原始数据:");
for(MyClass mc:li){
System.out.println(mc);
} //下面就是用一个匿名类Comparator的对象来对li排序:
//按name排序,如果name相同,再按age排,如果前两者还相同,再按sex排
//
Collections.sort(li,new Comparator<MyClass>(){
public int compare(MyClass mc1,MyClass mc2){
if(mc1.name.equals(mc2.name)){
if(mc1.age.equals(mc2.age)){
return mc1.sex.compareTo(mc2.sex);
}else{
return mc1.age.compareTo(mc2.age);
}
}else{
return mc1.name.compareTo(mc2.name);
}
}
public boolean equals(Object o){
return false;
}
});
System.out.println("排序之后:");
for(MyClass mc:li){
System.out.println(mc);
}
}}F:\java>java Test2
原始数据:
Name: zs 张三 Age: 20 Sex: 男
Name: ls 李四 Age: 20 Sex: 女
Name: ls 李四 Age: 23 Sex: 男
Name: zs 张三 Age: 20 Sex: 女
Name: ls 李四 Age: 19 Sex: 女
Name: ww 王五 Age: 20 Sex: 男
Name: ww 张三 Age: 19 Sex: 女
排序之后:
Name: ls 李四 Age: 19 Sex: 女
Name: ls 李四 Age: 20 Sex: 女
Name: ls 李四 Age: 23 Sex: 男
Name: ww 张三 Age: 19 Sex: 女
Name: ww 王五 Age: 20 Sex: 男
Name: zs 张三 Age: 20 Sex: 女
Name: zs 张三 Age: 20 Sex: 男