• java List 排序 Collections.sort() 对 List 排序


    实体类:

    class User {
     String name;
     String age;
     
     public User(String name,String age){
      this.name=name;
      this.age=age;
     }
     public String getAge() {
      return age;
     }
     public void setAge(String age) {
      this.age = age;
     }
     public String getName() {
      return name;
     }
     public void setName(String name) {
      this.name = name;
     } 
    }

    具体的比较类,实现Comparator接口:

    import java.util.Comparator;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Collections;
    
    public class ComparatorUser implements Comparator{
     public int compare(Object arg0, Object arg1) {
      User user0=(User)arg0;
      User user1=(User)arg1;
    
       //首先比较年龄,如果年龄相同,则比较名字
    
      int flag=user0.getAge().compareTo(user1.getAge());
      if(flag==0){
       return user0.getName().compareTo(user1.getName());
      }else{
       return flag;
      }  
     }
     
    }

    测试类:

    public class SortTest {
     
     public static void main(String[] args){
      List userlist=new ArrayList();
      userlist.add(new User("dd","4"));
      userlist.add(new User("aa","1"));
      userlist.add(new User("ee","5"));
      userlist.add(new User("bb","2"));  
      userlist.add(new User("ff","5"));
      userlist.add(new User("cc","3"));
      userlist.add(new User("gg","6"));
      
      ComparatorUser comparator=new ComparatorUser();
      Collections.sort(userlist, comparator);
       
      for (int i=0;i<userlist.size();i++){
       User user_temp=(User)userlist.get(i);
          System.out.println(user_temp.getAge()+","+user_temp.getName()); 
      }
      
     }
    }

    首先年龄排序,如果年龄相同,则按名字排序。

    结果:
       1, aa
       2, bb
       3, cc
       4, dd
       5, ee                    //注意:同样是5岁的人,则比较名字(ee,ff),然后排序
       5, ff
       6, gg

    java Collections.sort实现的排序默认是升序排序。既然知道默认是升序了,那么转换下两个Object的位置就变成降序排序。

  • 相关阅读:
    【洛谷P5514】永夜的报应【模拟】
    当你闲得无聊去编 C++「贪吃蛇」小游戏
    【牛客练习赛50】C
    【JZOJ3410】Tree【最小生成树】
    @Zookeeper可视化工具。 ZK 安装 node-zk-browser。2015.10.22亲测可用
    Zookeeper可视化工具。 ZK 安装 node-zk-browser。2015.10.22亲测可用
    读 Paxos 到 ZooKeeper ¥ 50大洋
    ZooKeeper 分布式锁
    UML 绘图关系
    Astah 使用 流程图、类图、时序图
  • 原文地址:https://www.cnblogs.com/longshiyVip/p/4777024.html
Copyright © 2020-2023  润新知