实现Comparable接口实现比较
public 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 +
'}';
}
/**
* 实现Comparable接口,重写compareTo方法
* 定义按照年龄 从小到大排序 *
*
* @param o
* @return
* 0 相同
* >0 aga1 >age2
* <0 age1<age2
*/
@Override
public int compareTo(User o) {
int age1 = this.getAge();
int age2 = o.getAge();
return age1 - age2;
}
public static void main(String[] args) {
User user1 = new User("jake", 21);
User user2 = new User("Tom", 24);
User user3 = new User("Jim", 21);
System.out.println(user1.compareTo(user2)); //-3
System.out.println(user2.compareTo(user1)); //3
System.out.println(user1.compareTo(user3)); //0
}
}
实现Comparator接口
public class myComparator implements Comparator<Customer> {
@Override
public int compare(Customer o1, Customer o2) {
return o1.getAge()-o2.getAge(); //从小到大排序
//o2.getAge()-o1.getAge() //从大到下排序
}
}
public 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 +
'}';
}
public static void main(String[] args) {
TreeSet<Customer> customers = new TreeSet<>(new myComparator());//传入比较器(从小到大)
Customer customer1 = new Customer("Jake", 21);
Customer customer2 = new Customer("Tom", 23);
Customer customer3 = new Customer("Jim", 22);
customers.add(customer1);
customers.add(customer2);
customers.add(customer3);
for (Customer customer:customers){
System.out.println(customer);
}
}
}