comparable
public class PersonTest{
public static void main(String[] args) {
Person[] people = new Person[]{
new Person(1,"11"),
new Person(2,"22"),
new Person(3,"33"),
};
java.util.Arrays.sort(people);
for(Person person : people ){
System.out.println(person.toString());
}
}
}
class Person implements Comparable<Person>{
private Integer age;
private String name;
public Person(Integer age, String name) {
super();
this.age = age;
this.name = name;
}
@Override
public int compareTo(Person o) {
if(o.age > this.age){
return -1;
}else{
return 1;
}
}
@Override
public String toString() {
return "Teacher [name=" + name + ", age=" + age + "]";
}
Comparator
public class ComparatorTest {
public static void main(String[] args) {
Comparator<String> comparator = new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if(o1.length() > o2.length()){
return -1;
}else{
return 1;
}
}
};
TreeSet<String> treeSet = new TreeSet<>(comparator);
treeSet.add("222555555");
treeSet.add("333");
treeSet.add("5555");
treeSet.add("666666");
System.out.println(treeSet.toString());
}
}
comparable 可比較的澜汤,在自定義類內(nèi)部 重寫compareTo 方法九榔,相當(dāng)于是類的內(nèi)部有比較功能,需要修改原有類奶稠,且比較固定
comparator 比較器陨献,不用修改原來的類,在外部實現(xiàn)一個比較規(guī)則懂更,可以理解成一個外部比較器吧眨业,比較靈活 可復(fù)用