温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java中的Compare和Comparator的使用方法

发布时间:2020-05-23 09:24:06 来源:亿速云 阅读:2068 作者:Leah 栏目:编程语言

如何使用Java中的Compare和Comparator?相信很多新手小白对Compare和Comparator的了解处于懵懂状态,通过这篇文章的总结,希望你能有所收获。如下资料是关于Compare和Comparator使用方法的代码。

class Apple implements Comparable<Apple>{
    int id;
    double price;
public Apple(int id, double price) {
    this.id = id;
    this.price = price;
}
public int compareTo(Apple o) {
    //return Double.compare(this.getPrice(),o.getPrice());
    if (Math.abs(this.price-o.price)<0.001)
        return 0;
    else
        return (o.price-this.price)>0?1:-1;
}
@Override
public String toString() {
    return "Apple{" +
            "id=" + id +
            ", price=" + price +
            '}';
}

}```

class AESComparator implements Comparator<Apple>{


    public int compare(Apple o1, Apple o2) {
        if (Math.abs(o1.price-o2.price)<0.001)
            return 0;
        else{
            return (o1.price-o2.price)>0?1:-1;
        }
    }
}

 实现了Comparable接口的类需要实现compareTo()方法,传入一个外部参数进行比对,实现了Comparator接口的方法需要实现compare()方法,对外部传入的两个类进行比较,从而让外部方法在比较时调用。

 两者的区别是实现Comparator接口代码更加灵活,可以定义某个类的多个比较器,从而在排序时根据实际场景自由调用,而Comparable接口实现后便不能改动。

 总结:
comparator接口:真正要实现的只有compare()方法,需要单独准备出一个类来实现comparator接口,这个类将作为指定类的排序类

public int compare(Emp o1,Emp,o2){
     return o1.id - o2.id
}
这是说如果o1的id - o2的id是正数就升序,如果负数降序。如果0就剔除

  >0  升序
<0降序
=0 重复,不记录
comparable接口

实现该类接口不需要重新创建一个排序的类,使用接口compareble接口排序,只要重写里面的compareTo()方法

 

Collections类是一个包装类,它包含有各种有关集合操作的静态方法。就像一个工具类。

Collections.sort()

sort()排序方法,根据元素的自然排序对指定列表按升序进行排序

public static <T>void sort(List<T> list,Comparator<>),根据指定比较器产生的顺序对指定列表进行排序,此列表内的所有元素都必须可使用指定的比较器相互比较

参数:list——要排序的列表
         C——确定列表顺序的比较器

猜你还想看:

1、java中compareTo()方法比较字符串的示例

2、java如何重写compareTo方法实现类排序

关于Java中的Compare和Comparator的使用方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果喜欢这篇文章,不如把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI