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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值