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

Comparable接口Comparator接口

CSDN话题挑战赛第2期 参赛话题:学习笔记 前言 博主在很早之前写过一篇面向对象编程的文章,其中粗略的介绍了一下Comparable接口的使用,现在问题来了,Comparabe接口Comparator...接口 用户自定义比较器类,实现Comparator接口: Public interface Comparator { // 返回值: // < 0: 表示 o1 指向的对象小于 o2 指向的对象...所以我们可以使用Comparator接口: 一个类若实现了这个接口,表示这个类天生就是为别的类的大小关系服务的: StudentSec这个类天生就是为了Student对象的排序而存在 覆写compare...如果要用Comparable接口,则必须实现这个接口,并重写compareTo()方法【一个参数】;但是Comparator接口可以在类外部使用,通过将该接口的一个匿名类对象当做参数传递给Collections.sort...总结 用简单的话来讲就是: Comparable接口可以让当前这个类拥有可以比较的能力,就可以和类型的对象进行比较 Comparator接口可以让我们定义不同的类,然后我们可以用这些自己定义好的排序类去对

57220

Java 集合排序规则接口 Comparator

(People::getAge)); 这里排序用到了一个关键接口 java.util.Comparator。...排序比较作为业务中经常出现的需求,我们有必要研究一下这个接口。 2. Comparator 概念 Comparator 是一个函数式接口。...也就是该接口主要用来进行集合排序。 3. Comparator 中的方法 Comparator 作为一个函数式接口只有一个抽象方法,但是它有很多的默认方法,我们来认识一下这些方法们。...它一共两个参数都是函数式接口。 第一个参数 Function<? super T, ?...小结 今天对 Comparator进行了简单的分析,它用于构建集合排序的规则,在日常开发中非常有用。下一篇 我们将对另一个和它十分相似的接口 Comparable 进行分析,敬请关注。

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

Java接口Comparable和Comparator的区别

Java里面关于对象排序一般离不开两个接口:Comparable和Comparator,那么它们两者有什么区别呢?...Comparator:非自然排序的接口,可以不需要改动原类,从外部自定义一个排序规则来实现排序。...有的同学可能已经想到了使用集合的Collections.reverse()方法就可以,这样确实可以,更优雅的办法我们的可以使用Comparator接口,来定义一个外部排序规则,如下: class...此外使用Comparator可以避免添加额外的代码与我们的目标类耦合,同时可以定义多种排序规则,这一点是Comparable接口没法做到的,从灵活性和扩展性讲Comparator更优,故在面对自定义排序的需求时...,可以优先考虑使用Comparator接口

1.2K40

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

Comparable和Comparator都是接口,都是用来比较和排序的,那么他们两个之间到底有这什么样的区别呢?...二、Comparator 正如上文所说,对于已经实现了Comparable接口的集合,或者是我压根就不想实现Comparable接口的集合难道就排不了序了么,或者就无法更改排序的规则了么,实际上不是的...,我们可以通过另一种方式来排序,就是利用Comparator接口。...好了,这就是Comparable接口Comparator接口的用法,另外要注意: Comparable接口位于 java.lang包下,Comparator接口位于java.util包下。...Comparable: 内部比较器,一个类如果想要使用 Collections.sort(list) 方法进行排序,则需要实现该接口 Comparator: 外部比较器用于对那些没有实现

39030

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

2.Comparator简介 Java.util.Comparator是比较接口,我们如果需要控制某个类的次序,而该类本身不支持排序(即没有实现Comparable接口),那么我们就可以建立一个“该类的比较器...”来进行排序,这个“比较器”只需要实现Comparator接口即可。...equals(Object obj); } 注意: 若一个类要实现Comparator接口:它一定要实现compare(T o1, T o2) 函数,但可以不实现 equals(Object obj...现在假如上面的Person类没有实现Comparable接口,该如何比较大小呢?我们可以新建一个类,让其实现Comparator接口,从而构造一个“比较器"。...0:-1); } } 3.comparable和Comparator区别比较 ==Comparable是排序接口,若一个类实现了Comparable接口,就意味着“该类支持排序”==。

1K80

Comparable和Comparator

Comparable接口 在java.lang包下,实现了Comparable函数式接口的对象可以自然排序,而数组和集合实现了该接口,所以我们会用Arrays.sort()或Collections.sort...()来排序 Comparable比较大于就返回1,小于返回-1,等于返回0 如果自定义的对象也要排序,就需要实现该接口并且手动重写里面的compareTo()方法 返回值 函数名 解释 int compareTo...Comparator 在java.util包下,实现该接口的对象可以精确控制排序的顺序,还可以将该比较器传递给Collections.sort或Arrays.sort以实现控制顺序 实现该接口需要重写里面的...返回值 函数名 解释 int compare(T o1, T o2) 比较其两个参数的顺序 需要排序的自定义对象 public class UserComparator implements Comparator...比较二者 Comparable实现的是自然排序,是对象内部自己实现的 Comparator实现定制排序,是对象之外实现的,借助了外力来推动比较 二者同时存在则使用Comparator排序

47620

Comparable和Comparator

出处comparable 接⼝实际上是出⾃ java.lang 包 它有⼀个 compareTo(Object obj) ⽅法进行排序comparator 接⼝实际上是出⾃ java.util 包它有⼀...(实体类实现)Comparator 是定制排序。(无法修改实体类时,直接在调用方创建)总结Java提供了只包含一个compareTo()方法的Comparable接口。这个方法可以个给两个对象排序。...Java提供了包含compare()和equals()两个方法的Comparator接口。compare()方法用来给两个输入参数排序,返回负数,0,正数表明第一个参数是小于,等于,大于第二个参数。...equals()方法需要一个对象作为参数,它用来决定输入参数是否和comparator相等。...只有当输入参数也是一个comparator并且输入参数和当前comparator的排序结果是相同的时候,这个方法才返回true。

35720

Comparable和Comparator的区别

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

27630
领券