原文转自:http://blog.163.com/xh_ding/blog/static/193903289201181103333431/
在最近写的一个工程里用到了TreeMap这个数据结构,TreeMap是SortedMap接口基于红黑树的实现,该类保证了映射按照升序排列关键字,根据使用的构造方法不同,可能会按照键的类的自然顺序进行排序,或者按照创建时所提供的比较器进行排序。插入该映射的所有键必须是可以相互比较的(实现Comparable接口),否则将抛出ClassCastException!
比如我创建一个TreeMap<Double,String>的结构要按照Double的降序排序(注意,默认的是按照升序排序的!)则可以这样写:
TreeMap<Double,String> rf = new TreeMap<Double,String>(new Comparator(){
@Override
public int compare(Object o1, Object o2) {
// TODO Auto-generated method stub
Double a = (Double)o1;
Double b = (Double)o2;
return -a.compareTo(b);
}});
如果想要一个键对应多个值则可以用一个list来存储value如:
TreeMap<Double,ArrayList<Integer>> rf = new TreeMap<Double,ArrayList<Integer>>();
向该TreeMap中放入数据<key,value>:
ArrayList<Integer> list = (ArrayList<Integer>) rf.get(key);//根据key得到存放value 的list
if(list == null)
list = new ArrayList<Integer>();
list.add(value);
rf.put(key,list);
如此便可以实现在TreeMap中一个key对应着多个value~~