Java之Comparable接口

Java中Comparable接口和Comparator接口怎么用? 阅读详情

Comparable接口:

概念:此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。

  • 为什么要使用这个类?
    我们都知道Arrays包下有sort方法是进行排序的,可是底层是怎样实现的,其实他也是实现了Comparable接口。里面实现了compareTo方法,所以按照某种规则能够排序。
  • 那问题有来了如果数组类型是自定义的类型那怎么排序?
    对呀,只能让我们自己实现Comparable接口同时实现compareTo方法,让按照我们的想法进行排序。
public class Person implements Comparable<Person>{
    private int age;
    private String name;
    private int high;
    public Person() {
    }

    public Person(int age, String name, int high) {
        this.age = age;
        this.name = name;
        this.high = high;
    }

    public Person(int age, String name) {
        this.age = age;
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setHigh(int high) {
        this.high = high;
    }

    public int getHigh() {
        return high;
    }

    @Override
    public String toString() {
        return "Person{" +
                "age=" + age +
                ", name='" + name + '\'' +
                ", high=" + high +
                '}';
    }

    @Override
    public int compareTo(Person o) {
//        return this.getAge() - o.getAge(); //年龄升序
        return o.getAge() - this.getAge(); //年龄降序
//        return this.getHigh() - o.getHigh(); //身高升序
    }

}

import java.util.Arrays;
public class TestPerson {
    public static void main(String[] args) {
        Person[] list = new Person[]{
                new Person(20,"MAHANG",180),
                new Person(22,"jinp",170),
                new Person(24,"SS",90)
        };

        Arrays.sort(list);
        for(Person x:list){
            System.out.println(x.toString());
        }

    }
}

Java中Comparable和Comparator接口的区别 Comparable 简介 Comparable 是排序接口 若一个类实现了Comparable接口,就意味着“该类支持排序”。此外,“实现Comparable接口的类的对象”可以用作“有序映射(如TreeMap)”中的键或“有序集合(TreeSet)”中的元素,而不需要指定比较器。 接口中通过x.compareTo(y)来比较x和y的大小。若返回负数,意味着x比y小;返回零,意味着x等于y;返回... 阅读详情

相关推荐

昆仑通态,自由串口通讯

软件默认无该功能,需要问客服索要扩展包。

cfqq1989的博客 1536

【java笔记】常用接口:Comparable接口

在学习数组时,Arrays类中的sort方法可以对对象数组进行排序但是: 对象所属的类必须实现Comparable接口。 Comparable接口的定义: java5之后接口可以加上泛型 对person按年龄排序: public class person implements Comparable<person>{ int age; String name; public person(int age, String name) { ...

_ 6352

QGIS v3.28 高效加载OSM在线地图的三种实用方法

本文详细介绍了在QGIS v3.28中高效加载OSM在线地图的三种实用方法:通过XYZ Tiles直接连接、使用QuickMapServices插件以及配置WMS/WTMS服务。针对每种方法提供了具体操作步骤、常见问题解决方案和性能优化建议,帮助用户根据需求选择最适合的方案,提升GIS工作效率。

weixin_29233333的博客 433

【Java 基础篇】Java 自然排序:使用 Comparable 接口详解

自然排序是一种默认的对象排序方式,它是根据对象的内在特征或属性来排序的。例如,对于整数,自然排序是按照数字的大小进行排序;对于字符串,自然排序是按照字母的字典顺序进行排序。自然排序通常是最直观和常见的排序方式,它使得对象在集合中以一种有序的方式存储和检索。在 Java 中,自然排序是通过Comparable接口来实现的。这个接口定义了一个compareTo方法,允许对象自己来决定如何与其他对象进行比较。Comparable接口是一个泛型接口,通常在类的声明中使用泛型参数来指定需要比较的对象类型。

繁依Fanyi的博客 9820

告别手绘!用Aseprite+Unity Tilemap,从AI生成到2D游戏地图的保姆级搭建流程

本文详细介绍了如何利用Aseprite和Unity Tilemap从AI生成素材到搭建2D游戏地图的完整流程。涵盖AI生成素材的预处理、图层管理、动画制作,以及Unity中的Tilemap系统配置和性能优化技巧,帮助开发者高效创建像素风游戏地图。

weixin_29015483的博客 580

ICCompiler II学习笔记(一)ICC II使用全流程 overview

学习笔记同步发布在我的个人网站上,欢迎来访查看。 个人学识有限,理解可能有误,仅供参考。 文章目录一、前言二、 ICC II 简介和 GUI2.1 Blocks 和 Design Libraries2.2 Objects2.3 Application Options三、Design Setup四、APR flow五、 课程主题:如何用 ICC II来实现最好的PPA 一、前言 现在的芯片都在追求一个极致的PPA 芯片的生成可以分为以下 5大步骤: Front-end Design:前端设计,最终产生

一名FPGA芯片设计爱好者的技术博客 2万+

Comparable接口与Comparator 接口详解

Comparable 接口和 Comparator 接口都是 Java 中用于比较对象的接口,但它们在使用方式和场景上有所不同。

wwwwwmmn的博客 2218

6G网络的关键技术、应用前景与挑战并存的科技征途

移动通信技术正以前所未有的速度迭代更新,而6G技术的研发进程渐渐成为了当前科技领域的热点。全球各国已纷纷将目光投向了充满想象的6G时代。本文将探讨全球6G技术研发的最新进展,以及6G技术的核心创新与潜在应用。

fiberroad的博客 2424

Java函数式接口之Comparable

Java函数式接口之Comparable

我的博客 8637

【GEOS-Chem模拟教程第二期上】生物质燃烧排放 GFED4 数据配置

生物质燃烧排放 GFED4 数据配置

WW、forever的博客 1301

R语言单因素被试内ANOVA检验

在R语言中,我们可以使用多种方法进行被试内ANOVA检验,其中包括使用内建函数或使用外部包。我们随机选择了10个被试,并对每个被试使用了三种不同的药物处理。通过上述代码示例,我们可以使用R语言进行单因素被试内ANOVA检验。假设我们的数据存储在一个名为"data"的数据框中,其中包含两个列:一个列是被试的编号,另一个列是生物指标的测量值。在上述代码中,我们创建了一个名为"data"的数据框,其中"Subject"列包含了被试的编号,"Measurement"列包含了生物指标的测量值。参数指定了数据来源。

PixelNovaO的博客 363

Comparable接口

Comparable 其含义是可比较的,如果对象所在的类实现了Comparable接口,这类对象就是可以进行大小比较,接口就是用于指定对象排序规则的 此接口强行对实现他的每个类的对象进行整体排序。此

阿楠的博客 1108

C#上位机开发:西门子/三菱PLC通信,新手直接上手

对着西门子S7协议文档看半天,连“DB块地址怎么写”都搞不懂;写三菱PLC代码时,分不清MC协议和Modbus的区别,代码改来改去连不上;好不容易跑通代码,换个PLC型号又报错,不知道哪里出问题;后来发现,新手学PLC通信根本不用先啃协议文档——先跑通“能通信”的代码,再慢慢理解底层逻辑,效率至少提升3倍。西门子PLC:用S7NetPlus库(新手最友好),实现以太网通信,支持S7-200 SMART/1200/1500;

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 877

【Java 学习】Comparable接口 和 Comparator接口,掌控排序逻辑解析,深入 Comparable 和 Comparator 的优雅切换

在 Java 编程中,排序是处理数据时常见的需求,而 Comparable 和 Comparator 是实现对象排序的重要工具。本文逐步讲解了 Comparable 和 Comparator 接口的原理、用法及应用场景,通过对比它们的特性,揭示了两者的核心区别。Comparable 适合定义对象的自然排序规则,排序逻辑直接内嵌于类中;而 Comparator 则更为灵活,支持在外部定义多种排序规则。无论是实现单一排序还是多种自定义排序,本文都提供了清晰的代码实例和详细的分析,为开发者提供了全面指导。

Code哈哈笑的博客 7480

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

关于java中的comparable接口

Comparable是排序接口;若一个类实现了Comparable接口,就意味着“该类支持排序”。可以使用Arrays.sort()对改类进行排序 1.Comparable接口 使用场景:假如说我们有这样一个需求,需要设计一个Person类,有两个属性:姓名(name)、年龄(age),按照年龄的大小进行排序,那么实现可以这样 代码: class Person implements Comparable<Person>{ int age; String name; pu

weixin_45877026的博客 6171

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Java 中 Comparable 接口的意义和用法.

在之前的博文中已经介绍了Java中 http://blog.youkuaiyun.com/nvd11/article/details/21516075

nvd11的专栏 5万+

Java中的Comparable接口与Comparator接口

Comparable接口与Comparator接口详解

m0_62909831的博客 2346

comparable java_java的Comparable接口详解

一、介绍在java中接口comparable使我们经常要接触到的,比如对集合或者数组进行排序,我们经常使用到Arrays.sort()或者Collections.sort().当集合中的对象是自定义的对象时,我们有两种方法能够使排序方法应用到自定义对象的集合(数组)中。下面我们介绍Comparable的用法。二、java库提供的对象的排序下面是List中对Integer对象的排序public cl...

weixin_31855625的博客 1048

java接口Comparable_Java之comparable接口

comparable接口:1.问题:java.util.Collections类中的方法 Collections.sort(List list)是根据什么确定容器中对象的“大小”顺序的?2.java中所有可以“排序”的类都实现了java.lang.comparable接口,Comparable接口中只有一个方法:public intcompareTo(Object obj):...

weixin_39949506的博客 254

Java Comparable 接口详解

Java Comparable 接口详解

weixin_51288065的博客 813

Java Comparable接口

--------------------------------------------------------------------- 开发工具和关键技术: MyEclipse 10 和 java 撰写时间: 20190501 --------------------------------------------------------------------- 此接口强行对实现它的...

csh的博客 1350

java comparable接口作用_Java Comparable 接口

compareTo()的灵活性如果我们反复调用上面的compareTo()方法,那么我们可以通过大小来排序,这很棒,但并非故事的结束。如果我们想通过颜色来给苹果排序呢?抑或是重量?我们也可以做到。关键是,我们的客户——让我们叫他胖子农夫(见例3),需要在我们开始开发之前精确定义需要如何对苹果进行排序。 例3他可以通过回答这两个问题来做到这一点:他希望苹果如何进行排序?他希望我们比较什么特征?在那样...

weixin_39820437的博客 98

Java中Comparable,Comparator,Clonaeble接口

Comparable英文翻译过来就是“可比的,对比的”,我们之前没有接触到类和对象的时候,比较大小仅仅是对基本数据类型进行比较,例如int,double.....,如今我们接触了类和对象,在对比大小这方面应该有新的认识。写到这里,我们很明显的就看到了Comparable接口的不足之处,它只能对对象的某个特性去比较,如果对象有多个特性,使用Comparable接口是不合适的,所以我们下面会再介绍一个接口来弥补这个不足。同样的,如果是多个学生,也用Arrays.sort来实现,或者用自己的Sort。

2402_89586740的博客 2066

JAVA之Comparable接口

一, 为何需要实现Comparable接口 我们知道Collections类中包含很多对实现Collection接口的容器各种操作的静态方法. 当然, 其中最长用的莫过于排序了(Collections.sort(List l). 下面是1个简单例子: public class Compare1{ public static void f(){ ...

qq971473597的博客 403

Java中Comparable接口的使用

public interface Comparable 当需要对一个对象进行排序时,该对象应该实现Comparable接口,并实现其唯一的方法: int compareTo(T o) 在该方法中定义自己的排序规则,当调用Arrays.sort(Object[] a)方法时则回调compareTo()方法,并按照自己的规则对对象数组进行排序。 返回值及比较规则: 1、返回负值-

逍遥飞鹤的专栏 4572

java的Comparable接口

java的Comparable接口

m0_46472218的博客 4625
上一篇: Java之方法重写与方法重载
下一篇: Java之函数式接口
Young-_-D
博客等级 码龄8年 62粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值