java基础之比较器

java基础之比较器

1、Comparable接口

  • 方法
比较:public int compareTo(T o)
  • 作用
实现对象的比较规则,让对象可以排序。
  • 范例
public class Test01 {
    public static void main(String[] args) {
        Person[] people=new Person[]{
                new Person("王A",80),
                new Person("王B",70),
                new Person("王c",90),
                new Person("王d",50),
        } ;
        Arrays.sort(people);    Arrays.stream(people).forEach(System.out::println);
    }
}
class Person implements Comparable<Person> {
    private String name;
    private Integer age;
    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
    @Override
    public int compareTo(Person o) {
        return this.age - o.age;
    }
}
Person{name='王d', age=50}
Person{name='王B', age=70}
Person{name='王A', age=80}
Person{name='王c', age=90}

2、Comparetor接口

  • 作用
实现没有实现Comparable接口对象的比较功能
  • 方法
比较:public int compare(T o1,T o2)
  • 范例
public class Test01 {
    public static void main(String[] args) {
        Person[] people = new Person[]{
                new Person("王A", 80),
                new Person("王B", 70),
                new Person("王c", 90),
                new Person("王d", 50),
        };
        Arrays.sort(people,new PersonComparator());
        Arrays.stream(people).forEach(System.out::println);
    }
}
class PersonComparator implements Comparator<Person> {
    @Override
    public int compare(Person o1, Person o2) {
        return o1.getAge() - o2.getAge();
    }
}
class Person {
    private String name;
    private Integer age;
    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
}
Person{name='王d', age=50}
Person{name='王B', age=70}
Person{name='王A', age=80}
Person{name='王c', age=90}
posted @ 2021-08-18 22:54  黎白昼  阅读(92)  评论(0)    收藏  举报