直接上代碼。
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