您的位置:首页 > 编程语言 > Java开发

java中TreeMap自定义排序以及一个键对应多个值问题

2012-05-17 11:11 253 查看
原文转自: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~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐