zoukankan      html  css  js  c++  java
  • java list集合元素根据某些字段排序(转)

    原文地址:java list集合元素根据某些字段排序

    一、jdk1.6的环境下

      新建ComparatorSort类,并实现Comparator接口,重写compare方法

      降序排序:o1的元素>o2的元素,并返回-1;o1的元素小于o2的元素,并返回1

      升序排序:o1的元素>o2的元素,并返回1;o1的元素小于o2的元素,并返回-1

      在方法中可对多个元素进行判断。

      

    复制代码
    
    
    import java.util.Comparator;
    
    import app.component.app.entity.AppProjectContRankVo;
    
    public class ComparatorSort implements Comparator<AppProjectContRankVo> {
    
        @Override
        public int compare(AppProjectContRankVo o1, AppProjectContRankVo o2) {
            if(o1.getOverdueRatio().compareTo(o2.getOverdueRatio())==1){
                return -1;
            }else if(o1.getOverdueRatio().compareTo(o2.getOverdueRatio())==-1){
                return 1;
            }else{
                return 0;
            }
        }
    }
     
    复制代码

    然后对需要排序的集合执行collections.sort

    Collections.sort(conBalCountByOrgNoList,new ComparatorSort());

    二、jdk1.8环境下

      可使用stream进行排序

     多条件排序使用:thenComparing
      降序排序使用:reversed()
    List<User> list = new ArrayList<User>();
            User user1 = new User();
            user1.setAge(19);
            user1.setScore(29);
            list.add(user1);
            User user2 = new User();
            user2.setAge(65);
            user2.setScore(322);
            list.add(user2);
            User user3 = new User();
            user3.setAge(19);
            user3.setScore(89);
            list.add(user3);
            List<User> listSort = list.stream().sorted(Comparator.comparing(User::getAge).reversed().thenComparing(User::getScore)).collect(Collectors.toList());
            for(User u:listSort){
                System.out.println(u.getAge()+"|"+u.getScore());
            }
    

    不需要使用多条件或者不需要倒叙的,把.reversed().thenComparing(User::getScore)删掉就行

  • 相关阅读:
    RocketMQ消息模型
    RabbitMQ消息模型
    消息队列选择
    消息队列使用场景
    synchronized底层实现
    Java 内存模型
    MySql中的字符数据类型
    php页面编码与字符操作
    git学习总结
    SESSION机制
  • 原文地址:https://www.cnblogs.com/wl1202/p/13501794.html
Copyright © 2011-2022 走看看