类之间的比较

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

相关推荐
皮皮林5513 小时前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java
冰_河4 小时前
QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!
java·后端·性能优化
桦说编程6 小时前
从 ForkJoinPool 的 Compensate 看并发框架的线程补偿思想
java·后端·源码阅读
躺平大鹅8 小时前
Java面向对象入门(类与对象,新手秒懂)
java
初次攀爬者9 小时前
RocketMQ在Spring Boot上的基础使用
java·spring boot·rocketmq
花花无缺9 小时前
搞懂@Autowired 与@Resuorce
java·spring boot·后端
Derek_Smart10 小时前
从一次 OOM 事故说起:打造生产级的 JVM 健康检查组件
java·jvm·spring boot
NE_STOP11 小时前
MyBatis-mybatis入门与增删改查
java
孟陬15 小时前
国外技术周刊 #1:Paul Graham 重新分享最受欢迎的文章《创作者的品味》、本周被划线最多 YouTube《如何在 19 分钟内学会 AI》、为何我不
java·前端·后端