TreeMap<Character,Integer> tree=new TreeMap();
tree.put('a', 97);
tree.put('b', 98);
tree.put('c', 99);
System.out.println(tree);
TreeMap要注意的事项:
1.往TreeMap添加元素时,如果元素的键具备自然顺序的特点,那么就会按顺序存储
2.如果元素的键不具备自然顺序的特点,那么键所属的类必须实现comparable接口,把键的比较规则定义在compareTo方法上
3.如果元素的键不具备自然顺序的特点,而且键所属的类也没有实现comparable接口,那么久必须在创建TreeMap对象时传入比较器
方式一:实现接口
class Emp implements Comparable{
int id;
int salary;
public Emp(int id,int salary){
this.id=id;
this.salary=salary;
}
@Override
public int compareTo(Object o) {
// TODO Auto-generated method stub
Emp e=(Emp)o;
return this.salary-e.salary;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "编号:"+this.id+" 工资:"+this.salary;
}
}
public class Test5 {
public static void main(String[] args) {
TreeMap<Emp,String> map=new TreeMap();
map.put(new Emp(1, 100),"001");
map.put(new Emp(2, 50), "002");
map.put(new Emp(3, 400), "003");
map.put(new Emp(4, 300),"004");
System.out.println(map);
}
}
方式二:自定义一个比较器
class MyComparator implements Comparator<Emp>{
@Override
public int compare(Emp o1, Emp o2) {
// TODO Auto-generated method stub
return o1.salary-o2.salary;
}
}
public class Test6 {
public static void main(String[] args) {
// TODO Auto-generated method stub
MyComparator myComparator=new MyComparator();
TreeMap<Emp, String> map=new TreeMap(myComparator);
map.put(new Emp(1, 100),"001");
map.put(new Emp(2, 50), "002");
map.put(new Emp(3, 400), "003");
map.put(new Emp(4, 300),"004");
System.out.println(map);
}
}