• Java-比较器


    对集合中的对象进行排序

    1.Comparator 外部比较器,需要外部创建比较器对象实现 Comparator 接口

    /**
     * 外部比较器
     * 按age由小到大排序
     */
    class UserComparators implements Comparator<User>{
        @Override
        public int compare(User o1, User o2) {
            if(o1.age > o2.age) {
                return 1;
            }else if(o1.age < o2.age) {
                return -1;
            }
            return 0;
        }
    }
    
    public class User{
        int age;
        String name;
        
        public User(int age, String name) {
            super();
            this.age = age;
            this.name = name;
        }
        
        public static void main(String[] args) {
            List<User> list = new ArrayList<>();
            for (int i = 0; i < 12; i++) {
                list.add(new User(new Random().nextInt(210), i+"name"));
            }
            System.out.println(list);
            Collections.sort(list, new UserComparators());
            System.out.println(list);
            
        }
    
        @Override
        public String toString() {
            return "User [age=" + age + ", name=" + name + "]";
        }
    }

    2.Comparable 内部比较器,需要被比较的对象实现 Comparable 接口

    public class User implements Comparable<User>{
        int age;
        String name;
        
        public User(int age, String name) {
            this.age = age;
            this.name = name;
        }
        
        public static void main(String[] args) {
            List<User> list = new ArrayList<>();
            for (int i = 0; i < 12; i++) {
                list.add(new User(new Random().nextInt(210), i+"name"));
            }
            System.out.println(list);
            Collections.sort(list);
            System.out.println(list);        
        }
        
        /**
         * 内部比较器
         * 按age由小到大排序
         */
        @Override
        public int compareTo(User o) {
            if(this.age > o.age) {
                return 1;
            }else if(this.age < o.age) {
                return -1;
            }
            return 0;
        }
    
        @Override
        public String toString() {
            return "User [age=" + age + ", name=" + name + "]";
        }
    }
  • 相关阅读:
    Spring基础系列-参数校验
    Spring基础系列-容器启动流程(1)
    Java面试系列--java基础
    RabbitMQ基础系列--客户端开发
    Spring基础系列--AOP织入逻辑跟踪
    Spring基础系列--AOP实践
    Spring基础系列-AOP源码分析
    Java设计模式之《模板模式》及使用场景
    Spring基础系列-容器启动流程(2)
    Spring基础系列-容器启动流程(1)
  • 原文地址:https://www.cnblogs.com/jhxxb/p/11837572.html
Copyright © 2020-2023  润新知