实例
package cn.Objects;
import org.junit.Test;
import java.util.TreeSet;
public class Person implements Comparable {
private String name;
private Integer age;
public void setName(String name) {
this.name = name;
}
public void setAge(Integer age) {
this.age = age;
}
public String getName() {
return name;
}
public Integer getAge() {
return age;
}
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int compareTo(Object o) {
if(o instanceof Person){
Person p=(Person)o;
int i=this.age.compareTo(p.age);
return i;
}
return 0;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
如何使用排序
package cn.Objects;
import org.junit.Test;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.TreeSet;
class mycomp implements Comparator{
@Override
public int compare(Object o1, Object o2) {
if(o1 instanceof Person && o2 instanceof Person){
Person p1=(Person)o1;
Person p2=(Person)o2;
return p2.getAge()-p1.getAge();
}
return 0;
}
}
public class Test12 {
@Test
public void test(){
TreeSet<Person> tree = new TreeSet<Person>(new mycomp());
tree.add(new Person("Tom", 23));
tree.add(new Person("Tom45", 12));
tree.add(new Person("Tom11", 45));
for (Object o : tree) {
Person o1 = (Person) o;
System.out.println(o1);
}
}
}
person类,实现了Comparable。如果不创建实现Comparator接口的实例,就按照类内重写了Comparable
compareTo方法排序。否则就按照mycomp 规则排序