首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Comparable和Comparator的区别

int compareTo(T o); } Comparator 定义(Comparator 接口仅仅只包括两个函数): package java.util; public interface Comparator...位于包 java.lang下 Comparable & Comparator 都是用来实现集合中元素的比较、排序,区别:Comparable 是在集合内部定义的方法实现的排序,Comparator 是在集合外部实现的排序...自定义的类要在加入list容器中后能够排序,可以实现Comparable接口,在用Collections类的sort方法排序时,如果不指定Comparator,那么就以自然顺序排序,这里的自然顺序就是实现...Comparable接口设定的排序方式。...Comparable是排序接口;若一个类实现了Comparable接口,就意味着“该类支持排序”;而Comparator是比较器;我们若需要控制某个类的次序,可以建立一个“该类的比较器”来进行排序。

31130
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Comparable和Comparator的区别

    前面我们已经学习过Comparator和Comparable接口的使用,下面来总结一下二者的区别. 1、Comparator接口位于java.util包下,而Comparable接口位于java.lang...对于Comparable:接口,它的方法只有一个对象作为参数,所以要比较的类需要实现Comparable接口,将当前对象与方法参数中的对象进行比较。...因此,如果使用Comparator接口,那么要比较的类和实现Comparator接口的类可以分开,如果使用Comparable接口,那么要比较的类就要实现Comparable:接口才可以 3、关于应用场景...一般情况下如果对某个类进行排序,比如Cat类,如果使用Comparable:接口的方式,那么Cat类需要实现Comparable:接口。...如果Ca类通过Comparable:接口的方式实现排序,比如通过name排序了。

    24530

    java中Comparable和Comparator的区别

    java中Comparable和Comparator的区别 简介 java.lang.Comparable和java.util.Comparator是两个容易混淆的接口,两者都带有比较的意思,那么两个接口到底有什么区别...实际上Comparable接口只定义了一个方法: public int compareTo(T o); 实现这个接口的类都需要实现compareTo方法,表示两个类之间的比较。...当使用这些可排序的集合添加相应的对象时,就会调用compareTo方法来进行natural ordering的排序。...在讲Comparable的时候,我们提到Comparable指定了对象的natural ordering,如果我们在添加到可排序集合类的时候想按照我们自定义的方式进行排序,这个时候就需要使用到Comparator...还有一个区别就是Comparator允许对null参数的比较,而Comparable是不允许的,否则会爬出NullPointerException。

    32120

    Java接口Comparable和Comparator的区别

    注意其中的第二个接口Comparable,实现了该接口的类,相当于默认定义了该类在集合里面的自然排序的方式。...Java里面关于对象排序一般离不开两个接口:Comparable和Comparator,那么它们两者有什么区别呢?...Comparator{ @Override public int compare(String o1, String o2) { return -o1.compareTo...什么时候应该用Comparable或者Comparator? 如果你想给你自定义的类提供默认的自然顺序,那么Comparable是一个好的选择。...此外使用Comparator可以避免添加额外的代码与我们的目标类耦合,同时可以定义多种排序规则,这一点是Comparable接口没法做到的,从灵活性和扩展性讲Comparator更优,故在面对自定义排序的需求时

    1.2K40

    Java中 Comparable和 Comparator的区别及联系

    Comparable Comparable定义在java.lang包里,意味着可以被比较的能力,因此某个类想要可以被排序,被比较大小,需要实现这个接口. public int compareTo(T o...); 接口里只定义了这一个方法,代表了:传入一个对象,将对象和元素自身进行比较,如果元素自身大,返回1,相等返回0,元素自身小于参数则返回-1....) o).id; } } 代码中定义了Student类,以及实现了Comparable,即只比较他们的id的大小即可....他们的区别及联系 那么问题来了,都有Comparable了,还要Comparator干什么? 设想一个场景,我们定义了一个学生类,如上面代码所示,那么学生可以按着id的大小进行排序....总结 他们的区别是角色不同,想要实现的目的也不同.一个是内部自然排序,只能有一种定义.一个是外部的比较器,可以定义多个不同的比较器,按需取用.

    1.4K30

    知识点:Comparable和Comparator接口的区别

    Comparable和Comparator都是接口,都是用来比较和排序的,那么他们两个之间到底有这什么样的区别呢?...,这个方法就是CompareTo public class Person implements Comparable{ String name; Integer age; public...简单的记,使用this对象和参数比较,就是升序,反之就是降序。...这个接口中有一个方法叫做compare,里边包含两个参数:如果用第一个和第二个做比较得到的就是升序,反之得到的就是降序。同样的你也可以使用这种方式对我们自己定义的类记性排序。...好了,这就是Comparable接口和Comparator接口的用法,另外要注意: Comparable接口位于 java.lang包下,Comparator接口位于java.util包下。

    44730

    浅谈Comparable与Comparator的区别

    平时进行自定义排序一直使用实现Comparable接口,一段时间后操作的时候居然发现有了个Comparator接口 上网差了些资料,总结笔记一下。...java.lang; import java.util.*; public interface Comparable { public int compareTo(T o); } Comparable...因为它底层使用的是compareTo方法。 Comparable和Comparator区别比较 Comparable是排序接口,若一个类实现了Comparable接口,就意味着“该类支持排序”。...两种方法各有优劣, 用Comparable 简单, 只要实现Comparable 接口的对象直接就成为一个可以比较的对象,但是需要修改源代码。...用Comparator 的好处是不需要修改源代码, 而是另外实现一个比较器, 当某个自定义的对象需要作比较的时候,把比较器和对象一起传递过去就可以比大小了, 并且在Comparator 里面用户可以自己实现复杂的可以通用的逻辑

    32910

    【21期】你能说说Java中Comparable和Comparator的区别吗

    Java 中为我们提供了两种比较机制:Comparable 和 Comparator,二者都是用来实现对象的比较、排序。 下面分别对Comparable 和 Comparator做具体介绍并总结。...---- Comparable Comparable可以认为是一个内比较器,实现了Comparable接口的类有一个特点,就是这些类是可以和自己比较的,至于具体和另一个实现了Comparable接口的类如何比较...运行结果为: 0 1 -1 注意一下,前面说实现Comparable接口的类是可以支持和自己比较的,但是其实代码里面Comparable的泛型未必就一定要是Domain,将泛型指定为String或者指定为其他任何任何类型都可以...---- Comparator Comparator接口里面有一个compare方法,方法有两个参数T o1和T o2,是泛型的表示方式,分别表示待比较的两个对象,方法返回值和Comparable接口一样是...(或者实现类实现了Comparable接口,但是对compareTo方法内的比较算法不满意),那么可以实现Comparator接口,自定义一个比较器,写比较算法。

    34340

    Java.lang.Comparable接口和Java.util.Comparator接口的区别

    Java的Comparator和Comparable当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序。....*; public interface Comparable { public int compareTo(T o); } T表示可以与此对象进行比较的那些对象的类型。...此接口只有一个方法compareTo,比较此对象与指定对象的顺序,如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。...0:-1); } } 3.comparable和Comparator区别比较 ==Comparable是排序接口,若一个类实现了Comparable接口,就意味着“该类支持排序”==。...用Comparator 的好处是不需要修改源代码, 而是另外实现一个比较器, 当某个自定义的对象需要作比较的时候,把比较器和对象一起传递过去就可以比大小了, 并且在Comparator里面用户可以自己实现复杂的可以通用的逻辑

    1.1K80

    你能说说Java中Comparable和Comparator的区别吗

    你能说说Java中Comparable和Comparator的区别吗 之前面试中被问到这个问题,当时不屑(会)回答,下来特意查了查,整理如下。...Java 中为我们提供了两种比较机制:Comparable 和 Comparator,二者都是用来实现对象的比较、排序。 下面分别对Comparable 和 Comparator做具体介绍并总结。...Comparable Comparable可以认为是一个内比较器,实现了Comparable接口的类有一个特点,就是这些类是可以和自己比较的,至于具体和另一个实现了Comparable接口的类如何比较,...运行结果为: 0 1 -1 注意一下,前面说实现Comparable接口的类是可以支持和自己比较的,但是其实代码里面Comparable的泛型未必就一定要是Domain,将泛型指定为String或者指定为其他任何任何类型都可以...Comparator Comparator接口里面有一个compare方法,方法有两个参数T o1和T o2,是泛型的表示方式,分别表示待比较的两个对象,方法返回值和Comparable接口一样是int

    8010

    jpg和jpeg的区别是什么_jpeg和jpg的区别是什么

    不过另一方面,JPG之所以很小的原因是:当文件在创建的时候会有一些数据被遗失,即通过“有损”的压缩方式来建立文件,这就是其文件小的原因所在了。...JPEG与TIFF转印在最好的铜版纸上,在JPEG压缩指数是12的前提下,二者的区别几乎没有,外行与内行(不用放大镜看印刷点阵)都看不出分别,因为真彩(24位以上)转换成印刷格式的四色模式时,颜色信息的损失比从...JPEG与TIFF转印在最好的铜版纸上,在JPEG压缩指数是12的前提下,二者的区别几乎没有,外行与内行(不用放大镜看印刷点阵)都看不出分别,因为真彩(24位以上)转换成印刷格式的四色模式时,颜色信息的损失比从...JPEG的文件格式一般有两种文件扩展名:.jpg和.jpeg,这两种扩展名的实质是相同的,我们可以把*.jpg的文件改名为*.jpeg,而对文件本身不会有任何影响。...虽然现在windows也可以支持任意长度的扩展名了,但大家已经习惯了.jpg的叫法,因此也就没有强制修正。这种情况类似 于.htm和.html的区别。

    2.9K20

    mysql和mongodb的区别是什么_mongodb和mysql的区别是什么?区别详细介绍

    大家好,又见面了,我是你们的朋友全栈君。 对于mongodb和mysql你应该都很清楚了吧,那么他们两个之间的区别你知道吗?...很多人对于mongodb和mysql的区别都不是很清楚,下面一起来了解一下吧。 一、mongodb和mysql的区别有哪些? 对于这两者的区别,我们可以从以下的九个方面来谈一下。...的区别通过上文你都应该很清楚了吧,可以仔细的看看哦。...延伸阅读: mongodb和mysql都是开源的常用数据库。 mongodb是非关系型数据库,也就是我们经常说到的文档型数据库,它是一种NoSQL的数据库,mysql是传统的关系型数据库。...他们之间各自有着各自的优点,主要的话是要看你用在什么样的地方。 你还想了解更多关于mongodb和mysql的知识内容吗?可以继续通过奇Q工具网的java架构师栏目来进行了解和学习哦。

    2.2K10

    Java 中的 Comparator 和 Comparable

    Comparable Comparable 接口同样只有一个抽象方法 int compareTo(T o),其规则和Comparator 的int compare(T o1, T o2)类似。...// 符合语法但是不符合设计意图的操作 Comparable comparable = String::length; 通常情况下Comparable 希望被作为对象的一个特性来表达该对象的实例之间是相互比较的...int year; // Used to sort movies by year public int compareTo(Movie m){ return this.year...3.Comparator vs Comparable Comparator 和 Comparable 很相似,但是它们也是有一些不一样的地方的,主要表现在: 视角不同,Comparable 通常是对象自带的比较属性而...总结 总而言之,如果对象的排序需要基于自然顺序(它本身是可比较的),则使用 Comparable,而如果需要根据业务来对不同属性进行排序,请使用 Comparator。

    33710
    领券