直接上代码。
ArrayList<Entity> list=new ArrayList<Entity>();
//准备数据
Random r=new Random();
int size=20;
for(int i=0;i<size;i++){
Entity e=new Entity(r.nextInt(size),r.nextInt(size));
System.out.println("第"+(i+1)+"个:"+e.toString());
list.add(e);
}
System.out.println("开始排序---------------------");
Comparator<Entity> comp=new Comparator<Entity>() {
public int compare(Entity o1, Entity o2) {
if(o1.lv>o2.lv){
return 1;
}
if(o1.lv==o2.lv){
if(o1.score>o2.score){//这个条件相等,判断下一个条件
return 1;
}
if(o1.score==o2.score){//这个条件相等,判断下一个条件
return 0;
}
}
return -1;
}
};
Collections.sort(list,comp);
System.out.println("从小到大排序后:");
for(Entity e:list){
System.out.println(e.toString());
}
一个list 中有Entity 对象, 需要根据lv 和score 两个条件 ,进行从小到大的排序。 这里强调一点:中间的==条件 也要保留。
最后贴出打印结果:
第1个:lv:6 _ score:7
第2个:lv:18 _ score:12
第3个:lv:16 _ score:2
第4个:lv:0 _ score:7
第5个:lv:0 _ score:13
第6个:lv:14 _ score:12
第7个:lv:12 _ score:13
第8个:lv:7 _ score:16
第9个:lv:5 _ score:1
第10个:lv:13 _ score:11
第11个:lv:17 _ score:18
第12个:lv:7 _ score:1
第13个:lv:17 _ score:5
第14个:lv:17 _ score:16
第15个:lv:1 _ score:17
第16个:lv:6 _ score:0
第17个:lv:14 _ score:8
第18个:lv:2 _ score:19
第19个:lv:13 _ score:1
第20个:lv:8 _ score:12
开始排序---------------------
从小到大排序后:
lv:0 _ score:7
lv:0 _ score:13
lv:1 _ score:17
lv:2 _ score:19
lv:5 _ score:1
lv:6 _ score:0
lv:6 _ score:7
lv:7 _ score:1
lv:7 _ score:16
lv:8 _ score:12
lv:12 _ score:13
lv:13 _ score:1
lv:13 _ score:11
lv:14 _ score:8
lv:14 _ score:12
lv:16 _ score:2
lv:17 _ score:5
lv:17 _ score:16
lv:17 _ score:18
lv:18 _ score:12