import java.util.Arrays;
import java.util.Comparator;
public class Test23 {
/*
* 自定义对象两种排序方法
* */
public static void main(String[] args) {
String[] names = {"Jack","Mary","菲菲","愤愤"};
Arrays.sort(names);
System.out.println(Arrays.toString(names));
//方法一:实现Comparable接口,修改了Cat类,不符合面向对象原则。
Cat[] cats = {new Cat("rr",21),new Cat("aa",1),new Cat("gg",12)};
Arrays.sort(cats);
System.out.println(Arrays.toString(cats));
//方法二:利用其他类,实现Comparator接口,利用接口规则来实现排序。
Dog2[] dogs = {new Dog2("rr",21),new Dog2("aa",1),new Dog2("gg",12)};
Arrays.sort(dogs,new DogComparator());
System.out.println(Arrays.toString(dogs));
}
}
//方法一:实现Comparable接口,修改了Cat类,不符合面向对象原则。
class Cat implements Comparable<Cat>{
private String name;
private int age;
public Cat() {
}
public Cat(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;
}
@Override
public String toString() {
return "Cat{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public int compareTo(Cat o) {
return this.age-o.age;
}
}
class Dog2{
private String name;
private int age;
@Override
public String toString() {
return "Dog2{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public Dog2() {
}
public Dog2(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;
}
}
//方法二:利用其他类,实现Comparator接口,利用接口规则来实现排序。
class DogComparator implements Comparator<Dog2>{
@Override
public int compare(Dog2 o1, Dog2 o2) {
return o1.getAge()-o2.getAge();
}
}
【Java随笔】自定义对象排序Comparable、Comparator(推荐)
最新推荐文章于 2024-07-14 22:18:32 发布