sunshine
管理员
管理员
  • 最后登录2023-10-30
  • 发帖数170
  • 社区居民
阅读:1844回复:0

[Java SE]Comparable 与 Comparator的区别?

楼主#
更多 发布于:2023-10-19 10:25

一、概述:

对一组数据进行排序(升序或降序),在Java中有很多方式,可以自己手写排序算法(冒泡、快速、二叉树排序等),但一般都采用JDK为我们提供的现有的2个接口,Comparable和Comparator。




二、相同点:

两者都是用来用作对象之间的比较,都可以自定义比较规则。 两者都是返回一个描述对象之间关系的int




三、区别:
  1. Comparable是java.lang包下的,Comparator是java.util包的。
  2. 实现Comparable接口必须重写compareTo(T o)方法,实现Comparator接口必须重写compare(T o1,T o2)方法。
  3. Comparable是内在比较器,实现这个接口的类的对象可以直接比较:this.compareTo(this),这个类也支持排序,由该类对象组成的集合可以直接使用Collections.sort方法排序,此外,“实现Comparable接口的类的对象”可以用作“有序映射(如TreeMap)”中的键或“有序集合(TreeSet)”中的元素,而不需要指定比较器。 Comparator是外在比较器,如果想比较两个类又没有实现Comparable或者想实现自定义排序的,可以用Comparator。
  4. Comparator与Comparable同时存在的情况下,比较器Comparator优先级高。
  5. 使用Comparable需要修改原先的实体类,是属于一种自然排序,而Comparator 是不用修改原先的类的实现一个新的比较器 。Comparator实际应用广。

参考:https://blog.csdn.net/FaizOrange/article/details/120828719
游客


返回顶部

公众号

公众号