java对象比较器[40]
文章目录
一、对象比较器概述
对象比较器:通过对象比较器对自定义对象进行排序,思想是面向接口编程;
自定义对象实现比较排序:@Override:注解表示重写
1.类要实现Comparable,并将<泛型>泛型改为当前类,再重写其compareTo方法,进行比较;再使用Arrays.sort进行排序;
2.不改变原有类,再创建一个类实现Comparator<泛型>,泛型改为实现类的类,重写compare方法,进行比较,再使用Arrays.sort(类数组,实现Comparator的类),进行排序;
二、代码演示
1.第一种方法:不改变原有类
1.原有类:
class Cat2{
private String name;
private int age;
@Override
public String toString() {
return "Cat2{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public Cat2(String name, int age){
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
2.创建新类实现Comparator
//创建一个新类实现Comparator
class Cat2ComparaTor implements Comparator<Cat2>{
@Override
public int compare(Cat2 o1, Cat2 o2) {
return o1.getAge()-o2.getAge();
}
}
3.对象实现
Cat2[] cat2s={new Cat2("CC",3),new Cat2("DD",2)};
//不改变原有类,创建一个新类;
Arrays.sort(cat2s,new Cat2ComparaTor());
System.out.println(Arrays.toString(cat2s));
2.第二种方法改变原有类
1.原有类
//改变原有类,实现Comparable方法
class Cat implements Comparable<Cat>{
private String name;
private int age;
public Cat(String name,int age){
this.name=name;
this.age=age;
}
@Override//注解表示重写
public String toString() {
return "Cat{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int compareTo(Cat o) {
return this.age-o.age;
}
}
2.对象实现
Cat[] cats={new Cat("AA",2),new Cat("BB",1)};
//改变原有类
Arrays.sort(cats);
System.out.println(Arrays.toString(cats));
三.小结
本章概述了java中对象比较器的使用,两种方法各有优缺,在实际开发中可以灵活运用;
有哪里不足或者有更好的建议,欢迎留言吐槽,有哪里不懂的小伙伴,可以私信我,我会一一答复,感谢认可,感谢支持!