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}

浙公网安备 33010602011771号