比较器的使用

【1】以INT类型为案例

比较思路:将比较的数据做差,然后返回一个int类型的数据,将这个int类型的数值  按照=0>0<0

public class Test {
    //这是一个main方法:是程序的入口
    public static void main(String[] args) {
        int a=10;
        int b=20;
        System.out.println(a-b);//=0>0<0
    }
}

 

【2】比较String类型数据

String类实现了Comparable接口,这个接口中有一个抽象方法compareTo,String类中对这个方法进行了重写

复制代码
public class Test {
    //这是一个main方法:是程序的入口
    public static void main(String[] args) {
        /*int a=10;
        int b=20;
        System.out.println(a-b);//=0>0<0*/
        String a="A";
        String b="B";
        a.compareTo(b);

    }
}
复制代码

【3】比较double类型数据:

复制代码
public class Test {
    //这是一个main方法:是程序的入口
    public static void main(String[] args) {
        /*int a=10;
        int b=20;
        System.out.println(a-b);//=0>0<0*/
        /*String a="A";
        String b="B";
        a.compareTo(b);*/
        double a=9.6;
        double b=8.3;
        System.out.println(((Double) a).compareTo((Double) b));
    }
}
复制代码

【4】比较自定义数据类型

(1)内部比较器

复制代码
package com.msb.test07;

/**
 * @author : liu
 * 日期:14:29:06
 * 描述:IntelliJ IDEA
 * 版本:1.0
 */
public class Student implements Comparable<Student>{
    private int age;
    private double height;
    private String name;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Student(int age, double height, String name) {
        this.age = age;
        this.height = height;
        this.name = name;
    }

    @Override
    public String toString() {
        return "Student{" +
                "age=" + age +
                ", height=" + height +
                ", name='" + name + '\'' +
                '}';
    }

    @Override
    public int compareTo(Student o) {
        /*return this.getAge()-o.getAge();*/
        //return ((Double)(this.getHeight())).compareTo(((Double) o.getHeight()));
        return this.getName().compareTo(o.getName());
    }
}
复制代码
复制代码
package com.msb.test07;

/**
 * @author : liu
 * 日期:14:30:19
 * 描述:IntelliJ IDEA
 * 版本:1.0
 */
public class Test02 {
    //这是一个main方法:是程序的入口
    public static void main(String[] args) {
        //比较两个学生:
        Student s1=new Student(10,160.5,"lili");
        Student s2=new Student(14,170.5,"nana");
        System.out.println(s1.compareTo(s2));
    }
}
复制代码

(2)外部比较器

复制代码
package com.msb.test08;

import java.util.Comparator;

/**
 * @author : liu
 * 日期:14:29:06
 * 描述:IntelliJ IDEA
 * 版本:1.0
 */
public class Student {
    private int age;
    private double height;
    private String name;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Student(int age, double height, String name) {
        this.age = age;
        this.height = height;
        this.name = name;
    }

    @Override
    public String toString() {
        return "Student{" +
                "age=" + age +
                ", height=" + height +
                ", name='" + name + '\'' +
                '}';
    }
}
class BiJiao01 implements Comparator<Student>{
    @Override
    public int compare(Student o1, Student o2) {
        //比较年龄
        return o1.getAge()-o2.getAge();
    }

    public BiJiao01() {
    }
}
class BiJiao02 implements Comparator<Student>{
    @Override
    public int compare(Student o1, Student o2) {
        //比较姓名
        return o1.getName().compareTo(o2.getName());
    }
    public BiJiao02() {
    }
}
复制代码
class BjJiao03 implements Comparator<Student>{
    @Override
    public int compare(Student o1, Student o2) {
        if (o1.getAge()-o2.getAge()==0){
            return ((Double)(o1.getHeight())).compareTo(((Double)(o2.getHeight())));
        }else{
            return o1.getAge()-o2.getAge();
        }
    }
    public BjJiao03() {
    }
}
复制代码

 

 
复制代码
复制代码
package com.msb.test08;


import java.util.Comparator;

/**
 * @author : liu
 * 日期:14:30:19
 * 描述:IntelliJ IDEA
 * 版本:1.0
 */
public class Test02 {
    //这是一个main方法:是程序的入口
    public static void main(String[] args) {
        //比较两个学生:
        Student s1=new Student(0,160.5,"lili");
        Student s2=new Student(14,170.5,"nana");
        //获取外部比较器
        Comparator bj1=new BiJiao02();
        System.out.println(bj1.compare(s1, s2));
    }
}
复制代码

【5】外部比较器和内部比较器那个好

答案:外部比较器,多态扩展性好

posted @   爱的加勒比  阅读(114)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示