美文网首页
java比较器详解

java比较器详解

作者: daysting | 来源:发表于2019-07-17 11:01 被阅读0次

    Java比较器

    内部比较器: 实现comparable接口, 需要重写comparato方法

    ps:写在创建类的内部,例如写个persion类,比较年龄! 让类实现该接口,去重写compareto方法即可

    public class perison implements Comparable<Book> {  // 实现比较
        private String name;
        private double age;
        public perison(String name, double age) {
        this.name = name;
        this.age = age;
        }
        @Override
        public String to String() {
            return "姓名:" + this.title + " 年龄:" + this.price;
        }
        @Override
        public int compareTo(perison o) {  // Arrays.sort()会自动调用此方法比较
            if(this.age > o.age) {
                return 1;
            } else if(this.age < o.age) {
                return -1;
            } else {
                return 0;
            }
        }
    }
    //compareTo()方法返回三类数据:1(大于)、0(等于)、-1(小于)
    
    public class TestDemo {
        public static void main(String args[]) {
            perison ps [] = new perison [] {
                    new perison("JJ", 12), 
                    new perison("TT", 18), 
                    new perison("MM",22), 
                    new perison("KK", 36), 
            };
            Arrays.sort(ps);  // 对象数组排序 会自动调用内部比较器
            System.out.println(Arrays.toString(ps));
        }
    }
    

    外部比较器:实现comparator接口,需要重写compare方法(主要是为了不修改已经封装好的类对象)

    ps:用在测试类中,当作一个方法的调用,用匿名内部类实现

    比如 Collections.sort(集合,比较器)

    compara和comparaTo方法共同之处,就是如果比较的数比被比较的数小返回-1

    public class text {
        public static void main(String[] args) {
            ArrayList aa = new ArrayList();
            persion p1 = new persion("小明", 18);
            persion p2 = new persion("小", 24);
            persion p3 = new persion("明", 19);
            aa.add(p1);
            aa.add(p2);
            aa.add(p3);
            Collections.sort(aa, new Comparator<persion>() {
                @Override
                public int compare(persion o1, persion o2) {
                    return o1.age - o2.age;
                }
            });
            System.out.println(aa);
        }
    }
    
    

    相关文章

      网友评论

          本文标题:java比较器详解

          本文链接:https://www.haomeiwen.com/subject/ufxqlctx.html