Java中Comparable接口的使用

2024-06-23 13:48
文章标签 java 接口 使用 comparable

本文主要是介绍Java中Comparable接口的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

public interface Comparable<T>

当需要对一个对象进行排序时,该对象应该实现Comparable接口,并实现其唯一的方法:

int compareTo(T o)
在该方法中定义自己的排序规则,当调用
Arrays.
sort(Object[] a)方法时则回调compareTo()方法,并按照自己的规则对对象数组进行排序。
返回值及比较规则:
1、返回负值---->小于
2、返回零------>等于
3、返回正值---->大于
例子:
定义实现Comparable接口的类
[java] view plaincopy

//定义一个类,并实现comparable接口  
class Worker implements Comparable<Worker>{  
    private String name;  
    private int age;  
    private int salary;  
      
    public Worker(String name, int age, int salary) {  
        super();  
        this.name = name;  
        this.age = age;  
        this.salary = salary;  
    }     
  
    public String getName() {  
        return name;  
    }  
      
    public int getAge() {  
        return age;  
    }  
  
    public int getSalary() {  
        return salary;  
    }  
  
    /** 
     *实现Comparable接口的compareTo方法,在此方法中定义自己的比较规则 
     * 首先按工资有由低到高排序,过工资相同则按年龄由高到底排序 
     */  
    @Override  
    public int compareTo(Worker other) {  
        // TODO Auto-generated method stub  
        if(this.salary < other.getSalary()){     //工资小于其他人时返回负值  
            return -1;  
        }else if(this.salary > other.getSalary()){   //工资大于其他人时返回正值  
            return 1;  
        }else{                                      //工资等于其他人时按照年龄再排序  
            if(this.age < other.getAge()){  
                return 1;//表示由高到低排序  
            }else if(this.age >= other.getAge()){  
                return -1;  
            }  
        }  
        return 0;         
    }  
      
    @Override  
    public String toString() {  
        // TODO Auto-generated method stub  
        return this.name +"\t" + this.age + "\t" + this.salary;  
    }  
      
};  
测试程序:
[java] view plaincopy

public class ComparableDemo {  
  
    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
        // TODO Auto-generated method stub  
          
        Worker [] workers = new Worker[5];  
        workers[0] = new Worker("test1",25,2000);  
        workers[1] = new Worker("test2",24,2100);  
        workers[2] = new Worker("test3",26,2100);  
        workers[3] = new Worker("test4",27,2200);  
        workers[4] = new Worker("test5",28,1900);  
          
        //调用Arrays.sort()方法进行排序  
        Arrays.sort(workers);  
        for(Worker w : workers){  
            System.out.println(w);  
        }  
  
    }  
  
--------------------- 
作者:小飞鹤 
来源:CSDN 
原文:https://blog.csdn.net/he90227/article/details/37699715 
版权声明:本文为博主原创文章,转载请附上博文链接!

这篇关于Java中Comparable接口的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1087329

相关文章

java如何解压zip压缩包

《java如何解压zip压缩包》:本文主要介绍java如何解压zip压缩包问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解压zip压缩包实例代码结果如下总结java解压zip压缩包坐在旁边的小伙伴问我怎么用 java 将服务器上的压缩文件解压出来,

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具

Spring WebFlux 与 WebClient 使用指南及最佳实践

《SpringWebFlux与WebClient使用指南及最佳实践》WebClient是SpringWebFlux模块提供的非阻塞、响应式HTTP客户端,基于ProjectReactor实现,... 目录Spring WebFlux 与 WebClient 使用指南1. WebClient 概述2. 核心依

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Spring事务传播机制最佳实践

《Spring事务传播机制最佳实践》Spring的事务传播机制为我们提供了优雅的解决方案,本文将带您深入理解这一机制,掌握不同场景下的最佳实践,感兴趣的朋友一起看看吧... 目录1. 什么是事务传播行为2. Spring支持的七种事务传播行为2.1 REQUIRED(默认)2.2 SUPPORTS2

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.