类之间的比较

简介: 类之间的比较

作者简介: zoro-1,目前大一,正在学习Java,数据结构等

作者主页: zoro-1的主页

欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

固定需求式

通过类实现Comparable<泛型>接口,重写compareTo方法,来进行比较

import java.util.Arrays;
class Car implements Comparable<Car>{
    public int size=1;
    public String name="pika";
    public Car(int size, String name) {
        this.size = size;
        this.name = name;
    }
    @Override
    public int compareTo(Car o) {
        return this.size -o.size;
    }
    @Override
    public String toString() {
        return "Car{" +
                "size=" + size +
                ", name='" + name + '\'' +
                '}';
    }
}
public class Text3 {
    public static void compar(Car[] cars){
        for(int i=0;i<cars.length;i++){
            for(int j=0;j<cars.length-i-1;j++){
                if(cars[j].compareTo(cars[j+1])>0){
                    Car temp=cars[j];
                    cars[j]=cars[j+1];
                    cars[j+1]=temp;
                }
            }
        }
    }
    public static void main(String[] args) {
        Car[] cars=new Car[3];
        Car car = new Car(2, "aodi");
        cars[0]=car;
        Car car1 = new Car(3, "benchi");
        cars[1]=car1;
        Car car2=new Car(1,"fala");
        cars[2]=car2;
        compar(cars);
        System.out.println(Arrays.toString(cars));
    }
}

代码解读:

Car类继承Comparable<泛型>,泛型就是要进行比较的类,

重写compareTo方法,方法的参数是要和当前引用的对象比较的对象,

返回this.size -o.size,本类中的size减去比较的对象的size,大于返回正数,小于返回负数,相等返回0;

比较器

在类外创一个新的类实现Comparator<泛型>接口,重写compare方法,来进行比较

import java.util.Arrays;
import java.util.Comparator;
class Car implements Comparable<Car>{
    public int size=1;
    public String name="pika";
    public Car(int size, String name) {
        this.size = size;
        this.name = name;
    }
    @Override
    public int compareTo(Car o) {
        return this.size -o.size;
    }
    @Override
    public String toString() {
        return "Car{" +
                "size=" + size +
                ", name='" + name + '\'' +
                '}';
    }
}
class sizecompare implements Comparator<Car>{
    @Override
    public int compare(Car o1, Car o2) {
        return o1.size-o2.size;
    }
}
class namecompare implements Comparator<Car>{
    @Override
    public int compare(Car o1, Car o2) {
        return o2.name.compareTo(o1.name);
    }
}
public class Text3 {
    public static void main(String[] args) {
        Car[] cars=new Car[3];
        Car car = new Car(2, "aodi");
        cars[0]=car;
        Car car1 = new Car(3, "benchi");
        cars[1]=car1;
        Car car2=new Car(1,"fala");
        cars[2]=car2;
        //sizecompare sizecompare=new sizecompare();
        //Arrays.sort(cars,sizecompare);
        namecompare namecompare=new namecompare();
        Arrays.sort(cars,namecompare);
        System.out.println(Arrays.toString(cars));
    }
}

代码解读:

在类外面创建两个比较器类sizecompare,namecompare,一个比较size,一个比较name,实现Comparator,重写compare方法,他的两个参数是连着的两个对象,返回值如果是前一个减后一个是升序,后一个减前一个是降序,然后将比较器实例化,当做参数传入Arrays类的第二个参数,形参用Comparator<泛型>来接收,发生了向下转型


今天的分享到这里就结束了,感谢大家支持,创作不易,希望大家能给博主个三连

目录
相关文章
|
消息中间件 开发框架 关系型数据库
02常见消息中间件对比
02常见消息中间件对比
249 0
|
JavaScript 前端开发 容器
vue组件封装——固定宽高比的容器(2种方法:纯CSS实现 + JS实现)
vue组件封装——固定宽高比的容器(2种方法:纯CSS实现 + JS实现)
398 2
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
深度解析Recraft V3:突破文本渲染限制,文生图黑马是怎样炼成的?
Recraft V3模型在文本生成图像(Text-to-Image)领域取得重大突破,通过创新的&quot;Bridging Text Spotting&quot;方法,解决了传统方法中误差累积和性能不佳的问题。该模型采用独立训练的检测器和识别器,并引入Bridge和Adapter机制,确保高质量图像生成。Recraft V3在多个数据集上表现优异,如Total-Text准确率达83.3%,ICDAR 2015达89.5%。其应用前景广泛,涵盖广告设计、教育和娱乐等领域,为文生图技术的实际应用提供了新可能。
512 27
|
弹性计算 人工智能 自然语言处理
魔搭社区与函数计算:高效部署开源大模型的文本生成服务体验
在数字化时代,人工智能技术迅速发展,开源大模型成为重要成果。魔搭社区(ModelScope)作为开源大模型的聚集地,结合阿里云函数计算,提供了一种高效、便捷的部署方式。通过按需付费和弹性伸缩,开发者可以快速部署和使用大模型,享受云计算的便利。本文介绍了魔搭社区与函数计算的结合使用体验,包括环境准备、部署应用、体验使用和资源清理等步骤,并提出了改进建议。
|
人工智能 搜索推荐 算法
【数据结构---排序】庖丁解牛式剖析常见的排序算法
【数据结构---排序】庖丁解牛式剖析常见的排序算法
491 0
|
设计模式 算法 Java
Java中的if-else if-else语句
Java中的if-else if-else语句
557 1
|
存储 监控 安全
办公室必备丨分享几款实用的局域网监控软件
网络安全在办公环境中日益重要,局域网监控软件成为必需。WorkWin监控软件强化权限控制,全面监控员工行为,管理USB设备和带宽,精确统计时间,实现远程控制,实时监控员工并支持移动部署。Wireshark协议分析工具深挖网络安全,识别潜在威胁,提供定制化功能。Nagios则专注于主机和服务监控,及时报警网络问题。
421 4
|
JavaScript Java 测试技术
基于SpringBoot+Vue的音乐播放器的详细设计和实现
基于SpringBoot+Vue的音乐播放器的详细设计和实现
331 0
|
网络虚拟化
【专栏】探讨了STP、RSTP和MSTP三种生成树协议的原理、特点及差异,附思科和华为双厂商命令示例
【4月更文挑战第28天】本文探讨了STP、RSTP和MSTP三种生成树协议的原理、特点及差异。STP通过计算生成树消除环路,但收敛速度慢;RSTP加快了收敛速度,增加了新端口角色;MSTP支持多实例,提高灵活性和扩展性。文中还提供了思科和华为设备的命令示例,强调了协议选择、配置一致性和性能优化在实际应用中的重要性。理解并合理应用这些协议能保障网络的稳定和可靠性。
1640 0
|
Java 数据库连接 mybatis
Mybatis中大于等于小于等于的写法
方法一:对照表 原符号 = & ' " 替换符号 &lt; &lt;= &gt; &gt;= &amp; &apos; &quot; 示例: select count(news_id) from ip_news ...
3442 0