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

Comparable接口和Comparator接口

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

64620

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: 外部比较器用于对那些没有实现

    44730

    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接口,就意味着“该类支持排序”==。

    1.1K80

    Java List排序:Comparable与Comparator接口及Stream API应用

    本文将详细解读如何使用Comparable接口、Comparator接口以及JDK 8引入的Stream API来高效地对List进行排序,并通过实例代码演示其用法和区别。...Comparable接口 原理与应用 java.lang.Comparable 是Java中一个标记型接口,它定义了一个方法 compareTo(T o)。...当一个类实现了Comparable接口,就表示这个类的实例之间可以进行比较排序。实现该接口的类通常具有自然排序规则,比如Integer、String等内置类型已经实现了Comparable。...Comparator接口 原理与应用 java.util.Comparator 是另一个接口,它也提供了比较两个对象的方法,但是它的比较逻辑是外在的,不依赖于被比较对象本身的实现,也就是说,它可以为任何类提供多种不同的排序策略...它可以接受一个Comparator作为参数,如果你的元素类型已经实现了Comparable接口,那么甚至可以直接调用sorted()而无需传入参数。

    9720

    Java List排序:Comparable与Comparator接口及Stream API应用

    本文将解读使用 Comparable 接口、Comparator 接口及 JDK 8 的 Stream API 对 List 进行高效排序,并通过实例代码演示用法和区别。...Comparable接口原理与应用java.lang.Comparable是 Java 标记型接口,定义了compareTo(T o)方法,实现该接口的类可进行比较排序,像 Integer、String...接口原理与应用java.util.Comparator 是另一个接口,它也提供了比较两个对象的方法,但是它的比较逻辑是外在的,不依赖于被比较对象本身的实现,它可以为任何类提供多种不同的排序策略。...Person 对象排序,可创建两个不同 Comparator,同一个 Person 类可依不同 Comparator 产生不同排序结果,这是外部排序的灵活性import java.util.Comparator...(Person::getAge));区别总结Comparable:内部排序,适用于有固有排序逻辑的实体,在类中实现接口进行内部排序。

    8310

    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排序

    51920

    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。

    39020

    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是比较器;我们若需要控制某个类的次序,可以建立一个“该类的比较器”来进行排序。

    31130
    领券