zoukankan      html  css  js  c++  java
  • Comparable和Comparator接口

    Comparable 是排序接口;若一个类实现了 Comparable 接口,就意味着 “该类支持排序”。而 Comparator 是比较器;我们若需要控制某个类的次序,可以建立一个 “该类的比较器” 来进行排序。

    1.若一个类实现了Comparable 接口,实现 Comparable 接口的类的对象的 List 列表 ( 或数组)可以通过 Collections.sort(或 Arrays.sort)进行排序。

    public class Person1 implements Comparable<Person1>  
    {  
        private int age;  
        private String name;  
      
        public Person1(String name, int age)  
        {  
            this.name = name;  
            this.age = age;  
        }  
        @Override  
        public int compareTo(Person1 o)  
        {  
           // return this.age-o.age; //升序
            return o.age-this.age; //降序
        }  
        @Override   
        public String toString()  
        {  
            return name+":"+age;  
        }  
    }  
    public class Test {
        
        public static void main(String[] args) {
            Person1 person1 = new Person1("zzh",18);  
            Person1 person2 = new Person1("jj",17);  
            Person1 person3 = new Person1("qq",19);  
       
            List<Person1> list = new ArrayList<>();  
            list.add(person1);  
            list.add(person2);  
            list.add(person3);  
       
            Collections.sort(list);  
            System.out.println(list);  
            
            Person1[] a={person1,person2,person3};
            Arrays.sort(a);
            System.out.println(a[0]);
        }
    }

    2.对类自身无法修改这就用到了Comparator这个接口(策略模式)。

        public final class Person2  
        {  
            private int age;  
            private String name;  
          
            public Person2(String name, int age)  
            {  
                this.name = name;  
                this.age = age;  
            }  
          
            @Override   
            public String toString()  
            {  
                return name+":"+age;  
            }  
          
            //getter and setter方法省略....  
        }  
    public class Test {
        public static void main(String[] args) {
            Person2 p1 = new Person2("zzh", 18);
            Person2 p2 = new Person2("jj", 17);
            Person2 p3 = new Person2("qq", 19);
            List<Person2> list2 = new ArrayList<Person2>();
            list2.add(p1);
            list2.add(p2);
            list2.add(p3);
    
            Collections.sort(list2, new Comparator<Person2>() {
                @Override
                public int compare(Person2 o1, Person2 o2) {
                    if (o1 == null || o2 == null)
                        return 0;
                    return o1.getAge() - o2.getAge();
                }
            });
            System.out.println(list2);
        }
    }
  • 相关阅读:
    adb shell am pm 用法
    HTML的属性和css基础
    HTML的实际演练2
    HTML的实际演练1
    HTML的标签简介
    HTML的基础知识
    Python之 ---成员修饰符
    Python基础之-----------函数
    Python之-------基础数据类型
    Python之内置函数
  • 原文地址:https://www.cnblogs.com/mcahkf/p/8607960.html
Copyright © 2011-2022 走看看