zoukankan      html  css  js  c++  java
  • 2018.9.17 面试问题-----如何对List集合中的元素进行排序?

    Collections对List集合中的数据进行排序

    有时候需要对集合中的元素按照一定的规则进行排序,这就需要用到
    Java中提供的对集合进行操作的工具类Collections,其中的sort方法

    先看一个简单的例子:
    [java] view plain copy
    public static void main(String[] args) {
    List nums = new ArrayList();
    nums.add(3);
    nums.add(5);
    nums.add(1);
    nums.add(0);
    System.out.println(nums);
    Collections.sort(nums);
    System.out.println(nums);
    }
    输出结果:
    [3, 5, 1, 0]
    [0, 1, 3, 5]
    稍微复杂的List里面放一个复杂的对象
    [java] view plain copy
    package core.java.collection.collections;

    public class User implements Comparable{

    private int score;  
    
    private int age;  
    
    public User(int score, int age){  
        super();  
        this.score = score;  
        this.age = age;  
    }  
    
    public int getScore() {  
        return score;  
    }  
    
    public void setScore(int score) {  
        this.score = score;  
    }  
    
    public int getAge() {  
        return age;  
    }  
    
    public void setAge(int age) {  
        this.age = age;  
    }  
    
    @Override  
    public int compareTo(User o) {  
        int i = this.getAge() - o.getAge();//先按照年龄排序  
        if(i == 0){  
            return this.score - o.getScore();//如果年龄相等了再用分数进行排序  
        }  
        return i;  
    } 
    
    }  
    
    public static void main(String[] args) { 
            List users = new ArrayList(); 
            users.add(new User(78, 26)); 
            users.add(new User(67, 23)); 
            users.add(new User(34, 56)); 
            users.add(new User(55, 23)); 
            Collections.sort(users); 
            for(User user : users){ 
                System.out.println(user.getScore() + “,” + user.getAge()); 
            } 
    } 
    输出结果: 
    55,23 
    67,23 
    78,26 
    34,56 
    我们会发现sort(List)方法中List中的T必须实现Comparable接口,然后实现 
    compareTo()方法,该方法的返回值0代表相等,1表示大于,-1表示小于;为什么 
    在简单例子中没有看到实现Comparable接口呢?是因为Integer类其实自己已经实现 
    了Comparable接口,Java已经给我们做好了。
    
    Collections提供的第二种排序方法sort(List list, Comparator
    
    
  • 相关阅读:
    Python Revisited Day 13 (正则表达式)
    Python Revisited Day 06 (面向对象程序设计)
    Python Revisited (变量)
    Python Revisited Day 05(模块)
    Python Revisited Day 04 (控制结构与函数)
    Python Revisited Day 03 (组合数据类型)
    Numpy
    Python Revisited Day 01
    Python3使用openpyxl读写Excel文件
    Python3操作YAML文件
  • 原文地址:https://www.cnblogs.com/qichunlin/p/9665725.html
Copyright © 2011-2022 走看看