天天看點

Collections.sort() 方法例子

直接上代碼。       

    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