TreeMap定制排序和自然排序
自然排序是实现Comparable接口的方法。代码如下:
@Override
public int compareTo(Object o) {
if (o instanceof Person){
Person p = (Person) o;
int i= this.age.compareTo(p.age);
if (i == 0){
return this.name.compareTo(p.name);
}else {
return i;
}
}
return 0;
}
定制排序是通过Comparator实现compare接口。具体如下:
@Test
public void treeSet(){
Comparator comparator = new Comparator() {
@Override
public int compare(Object o1, Object o2) {
if (o1 instanceof Person && o2 instanceof Person){
Person p1 = (Person) o1;
Person p2 = (Person) o2;
int i = p1.getAge().compareTo(p2.getAge());
if (i == 0){
return p1.getName().compareTo(p2.getName());
}
return i;
}
return 0;
}
};
Map map = new TreeMap(comparator);
map.put(new Person("AA", "21"),34);
map.put(new Person("BB", "24"),45);
map.put(new Person("CC", "21"),66);
map.put(new Person("AA", "26"),33);
Set set = map.keySet();
for (Object o : set) {
System.out.println(o);
}
}
如有不足之处,请多指教。