类之间的比较

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

作者主页: zoro-1的主页

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

类之间的比较

固定需求式

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

java 复制代码
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方法,来进行比较

java 复制代码
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<泛型>来接收,发生了向下转型
今天的分享到这里就结束了,感谢大家支持,创作不易,希望大家能给博主个三连

相关推荐
Scott9999HH9 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
腻害兔9 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
码智社10 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海10 小时前
python 列表、元组、集合和字典
开发语言·python
克里斯蒂亚诺更新10 小时前
ruoyi角色权限的对应关系
笔记
萧瑟余晖11 小时前
JDK 26 新特性详解
java·开发语言
马优晨12 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
a11177613 小时前
2FA 验证码生成器(github登录验证 app)
笔记·学习
人邮异步社区14 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大14 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf