定义一个类实现comparable接口用sort排序

Java中Comparable接口与Comparator接口的详解与使用 Comparable是实现类的内部排序规则的接口,注意是类的**内部排序**规则,也即是说,我们在类中实现Comparable接口后,调用sort()方法时自动使用,无需指定排序规则,这一点要跟Comparator区分开。创建Cat类,实现Comparable接口,重写compareTo方法,自定义Cat类的内部自然排序比较规则,这里我们实现Cat对象按score从小到大排序,score相同的按age从小到大排序。)排序(即String类内部自然排序顺序)为同一个类定义多种不同的排序规则。 阅读详情

1.什么是Comparable接口
此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort (和 Arrays.sort )进行自动排序。
实现此接口的对象可以用作有序映射表中的键或有序集合中的元素,无需指定比较器。
强烈推荐(虽然不是必需的)使自然排序与 equals 一致。
所谓与equals一致是指对于类 C 的每一个 e1 和 e2 来说,当且仅当 (e1.compareTo((Object)e2) == 0) 与e1.equals((Object)e2) 具有相同的布尔值时,类 C 的自然排序才叫做与 equals 一致 。
2.实现什么方法
int compareTo(T o)
比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
强烈推荐 (x.compareTo(y)==0) == (x.equals(y)) 这种做法,但不是 严格要求这样做。一般来说,任何实现 Comparable 接口和违背此条件的类都应该清楚地指出这一事实。推荐如此阐述:“注意:此类具有与 equals 不一致的自然排序。”
参数:
o - 要比较的对象。
返回:
负整数、零或正整数,根据此对象是小于、等于还是大于指定对象。
抛出:
ClassCastException - 如果指定对象的类型不允许它与此对象进行比较。
3.代码如下:

package test;


public class Employee implements Comparable<Employee> {
    private String name;
    private double salary;
 
    public Employee(String name, double salary) {
        this.name = name;
        this.salary = salary;
    }
 
    public String getName() {
        return name;
    }
 
    public double getSalary() {
        return salary;
    }
 
    public void raiseSalary(double byPercent) {
        double raise = salary * byPercent / 100;
        salary += raise;
    }
 
    /**
     * Compares employees by salary
     */
    //在实现接口中的方法时,不允许使用@Override
    public int compareTo(Employee other) {
        return Double.compare(salary, other.salary);
    }
}

测试类:

package test;

import java.util.*;
 
/**
 * This program demonstrates the use of the Comparable interface.
 */
public class EmployeeSortTest {
    public static void main(String[] args) {
        Employee[] staff = new Employee[3];
        
        staff[0] = new Employee("Harry Hacker",35000);
        staff[1] = new Employee("Carl Cracker",75000);
        staff[2] = new Employee("Tony Tester",38000);
        
        Arrays.sort(staff);
        
        //print out information about all Employee objects
        for(Employee e : staff) {
            System.out.println("name=" + e.getName() + ", salary=" + e.getSalary());
        }
    }

}

Comparable接口和Comparator接口 目录前言`Comparable` 接口 前言 在实际应用中,我们往往有需要 比较两个自定义对象 大小的地方。而这些自定义对象的比较,就不像简单的整型数据那么简单,它们往往包含有许多的属性,我们一般都是根据这些属性对自定义对象进行比较的。所以 Java 中要 比较对象的大小 或者要 对对象的集合 进行排序,需要通过比较这些对象的某些属性的大小来确定它们之间的大小关系 一般 Java 中通过接口来实现两个对象的比较,比较常用就是 Comparable 接口和Comparator 接口 Comparable 接口 阅读详情

相关推荐

Java中Comparable接口和Comparator接口怎么用?

Java中Comparable接口和Comparator接口怎么用?

小贺想改变 1255

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

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

繁依Fanyi的博客 9820

STM32L452与FPGA通信翻车?手把手教你关闭I2C时钟延展避坑(附OVR错误解决方案)

本文深入解析STM32L452与FPGA在I2C通信中因时钟延展功能导致的常见问题,提供关闭I2C时钟延展的详细配置方法(NOSTRETCH模式),并针对可能出现的OVR错误给出Combined模式解决方案。通过实战案例和波形分析,帮助工程师快速排查和解决嵌入式系统中的I2C兼容性问题。

e3f4g5的博客 214

Comparble接口-自定义类排序

Comparable接口实现自定义排序

2201_75452232的博客 510

STM32H743 SD卡读写避坑实录:CubeMX配置MDMA给FATFS,我的FreeRTOS项目踩了哪些雷?

本文详细解析了STM32H743在CubeMX配置中结合SDMMC、MDMA与FATFS的实战避坑指南,特别针对FreeRTOS环境下的SD卡读写问题提供了解决方案。从时钟配置到FATFS参数设置,再到DMA缓存维护和FreeRTOS集成技巧,帮助开发者高效解决数据损坏、DMA传输错误等常见问题,提升项目稳定性。

weixin_30878501的博客 493

分类预测 | MATLAB实现ELM极限学习机多特征分类预测(二分类)

分类预测 | MATLAB实现ELM极限学习机多特征分类预测(二分类)

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 778

【Java】Comparable接口的实现与使用

Comparable接口的实现与使用1 Comparable接口声明及其作用2 实例 1 Comparable接口声明及其作用 想对某个类的对象之间做比较,就需要实现Comparable 接口。接口中只有一个方法compareTo,这个方法定义了对象之间的比较规则。依据这个“比较规则”,我们就能对所有对象实现排序。 下面是Comparable接口的声明以及作用,可以看到它可以使继承他的类进行比较大小,只需要调用实现类的compareTo方法即可 public interface Comparable &l

南花醉笔丶的博客 7072

CH-x01&ICU-x0201-问答专题

CH201在近距离30cm和远距离1.8m左右测距误差是最大的,误差可能>3 cm。在中间部分测距误差是<2cm的,因为考虑到安装测试治具也存在误差,所以整个范围设置在±3cm。

nicole088的专栏 379

Java接口comparable使用方法详解

实现了Comparable接口的类可以自定义比较逻辑。@Override这个compareTo方法使用name属性的字符串比较进行排序,而不是使用age属性的数值比较。

weixin_63645714的博客 1302

大疆A型板使用经验分享(四)—— PWM和舵机SG996的控制

一. j

weixin_43361652的博客 3879

UE5实现物体高亮描边效果(含UE相关源码浅析)

UE5实现物体高亮描边效果

专注GIS开发 7334

java comparable接口作用_Java 中 Comparable 接口的意义和用法

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

weixin_33019827的博客 398

YOLO11多个点组合创新:GC10-DET缺陷检测 | DCNv4结合SPPF+11Detect创新性结合

DCNv4结合SPPF+11Detect创新性结合,原始mAP50为0.633 提升至0.651

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1290

Java 对自定义的类排序: Comparable接口

目录 Java 对自定义的类排序: Comparable接口 Comparable接口作用: comparaTo方法: 利用comparator接口实现排序的方法步骤: 例程源码: 例题: Java 对自定义的类排序: Comparable接口 Comparable接口作用: comparaTo方法: 利用comparator接口实现排序的方法步骤: 与comp...

紫蝶侠的博客 708

弹窗提示报错: F:\c\CFX5\bin\Debug\net9.0-windows10.0.26100.0\CFX5.dll 面向无法动态枚举工具箱项目的平台...如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 944

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Comparable 接口的使用

接口 Comparable 此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。 实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort)进行自动排序。实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。 方法详细信息 compareTo int compareTo(T o) 比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整

weixin_44602460的博客 4911

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java 中的Comparable接口

Comparable是排序接口。若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或 Arrays.sort进行自动排序。 此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指定比较器。 此接口只有一个方法compare,比较此对象与指定对象的顺序,如果该对...

是魔鬼还是秀儿的博客 285

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

java实现自定义排序(实现Comparable接口)

        排序的算法,大家都不陌生,有冒泡排序、选择排序、插入排序,快速排序等等。如果现在有学生类,学校添加了很多学生,要你给学生按照学号大小排序,你会怎么排? 学生类   Student {int stuID;    String stuName;   int score;     }          咱们java功能很强大,库里自带给数组排序的方法Arrays.sort(); 来看看...

zouzong123的博客 3万+

使用Comparable接口自定义排序

Comparable接口用于强行对实现它的每个类的对象进行排序。在实现该接口的类中,必须实现compareTo()方法,用于指定排序规则。Comparable的声明:public class A implements Comparable&lt;A&gt;{}在实现compareTo()方法后,若将对象保存到列表中,可通过执行Collections.sort()方法进行自动排序;若保存到数组中,可...

qq_25525563的博客 574

Java使用接口(interface)实现对类数组的排序

在java中,接口不是类,而是对类的一组需求的描述,这些类要遵从接口描述的统一格式进行定义。 Arrays类中sort方法可以对对象数组进行排序,但是需要满足下面的前提: 对象所属的类必须实现Comparable接口 下面是Comparable接口代码: 任何实现Comparable接口都需要compareTo方法 将类声明为实现某个接口,需要使用关键字implements 如果实现Compa...

fanc的博客 1033

Comparable接口的使用

1 为一个类定义泛型类型,需要将泛型类型放在类名之后,例如GenericStack.为一个方法定义泛型类型,要将泛型类型放在方法返回类型之前,例如 void max(E o1, E o2)。 2 Comparable接口 假设要设计一个找出两个相同类型对象中较大者的通用方法。这里的对象可以是两个学生、两个日期、两个圆、两个矩形或者两个正方形。为了实现这个方法,这两个对象必须是可比较的。因此,这两个对象都该有的共同行为就是comparable(可比较的)。为此,Java提供了Comparable接口。 接口

weixin_45583482的博客 536

运用 Comparable 接口实现自定义类的升序排序

List commonMsgCenterCommonResponseDTOList = null; Collections.sort(commonMsgCenterCommonResponseDTOList); public class CommonMsgCenterCommonResponseDTO implements Comparable<CommonMsgCenterCommonResponseDTO>{ /** * group 分组id */ pri

༺ bestcxx的专栏 ༻ 743

Java中Comparable接口的使用

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

逍遥飞鹤的专栏 4572

java comparable排序_java中实现Comparable接口实现自定义排序的示例

实例如下所示:class student implements comparable{string name;int gpa;@overridepublic int compareto(object arg0) {// todo auto-generated method stubstudent s = (student)arg0;if(gpa == s.gpa) return name.comp...

weixin_39628343的博客 165

Comparable接口&&Comparator接口

Comparable接口 首先,我们需要把Comparable接口想象成一个排序器,所谓的排序器就是给对象排序用的,这个应该懂得意思吧。 重点: 1、若一个类实现了Comparable接口,就意味着该类支持排序。实现了Comparable接口的类或列表及数组可以通过Collections.sort或Arrays.sort进行自动排序。 2、实现了Comparable接口的类需要去实现一个方法 public int compareTo(T o); 上述的代码中 没排序的结果是:13----20------5

qq_45515182的博客 248

java对ArrayList中的元素自定义排序

任何类只要实现了Comparable接口ji

lalala 4737
上一篇: 线程,管程,协程,和进程的总结
下一篇: 自己总结的thymeleaf(引擎模板)一些基本用法
java_hwy
博客等级 码龄8年 6粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值