compare 方法:
通过实现java.util.comparator接口的实现类的重载,重载的方法里面写入比较条件特定字段的差值(比较条件)并返回,然后在创建一个实现comparator接口的实现类对象(也就是真正的比较器),用数组的sort方法按照特定字段进行升序或者降序(默认是升序)。(不能在实体类里面重载compare方法,需要单独创建实现comparator接口类来实现)
调用方式 :Arrays.sort(对象数组,比较器实例);
(对象数组按照类中compare方法设置的比较条件排序)
public class CompareDemo {
public static void main(String[] args) {
// CompareImp compareImp = new CompareImp();
Customer[] customers = new Customer[3];
customers[0]=new Customer("张三",18);
customers[1]=new Customer("李四",20);
customers[2]=new Customer("王五",4);
Arrays.sort(customers, new Comparator<Customer>() {
@Override
public int compare(Customer o1, Customer o2) {
return o1.getAge()-o2.getAge();
}
});
// Arrays.sort(customers,compareImp);
for (Customer c:customers) {
System.out.println(c.toString());
}
}
}
//class CompareImp implements Comparator<Customer>{
//
// @Override
// public int compare(Customer o1, Customer o2) {
// return o1.getAge()-o2.getAge();
// }
//
//}
class Customer {
private String name;
private Integer age;
public Customer() {
}
public Customer(String name, Integer age) {
this.name = name;
this.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;
}
@Override
public String toString() {
return "Customer{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
打印
compareTo 方法:
实现Java.lang.Comparable接口的实现类(数组元素的类)中进行重载,在方法里面写入比较条件并返回,然后直接调用数组的sort方法按照特定字段进行默认升序
调用方式:Arrays.sort(对象数组);
(对象数组按照比较器的比较条件进行排序)
public class CompareToDemo {
public static void main(String[] args) {
User[] u = new User[6];
u[0] = new User("张三", 10);
u[1] = new User("李四", 20);
u[2] = new User("王五", 5);
u[3] = new User("王五", 5);
u[4] = new User("张三", 1);
u[5] = new User("隔壁老王", 10);
/*数组的sort方法按照特定字段进行默认升序*/
Arrays.sort(u);
for (User o : u) {
System.out.println(o.toString());
}
}
}
class User implements Comparable<User> {
private String name;
private Integer age;
public User() {
}
public User(String name, Integer age) {
this.name = name;
this.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;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public int compareTo(User o) {
/*降序*/
return o.age-this.age;
/*升序*/
//return o.age-this.age;
}
}
打印