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的降序排序(注意,默认的是按照升序排序的!)则可以这样写:
如果想要一个键对应多个值则可以用一个list来存储value如:
TreeMap<Double,ArrayList<Integer>> rf = new TreeMap<Double,ArrayList<Integer>>();
向该TreeMap中放入数据<key,value>:
如此便可以实现在TreeMap中一个key对应着多个value~~
在最近写的一个工程里用到了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~~
相关文章推荐
- JNI之c/c++返回中文给java 乱码问题以及java数组在c排序
- Java序列化的机制和原理,以及自定义序列化问题
- Java HashMap和TreeMap的排序问题总结
- java学习笔记---第一个applet程序以及一个小问题的解决
- 用java写关于删除一个字符串的字符以及删除一个字符串与另一个字符串中相同字符的问题
- 由一个简单示例 引出java继承中父子类成员变量共享问题 以及super的使用
- java中的list自定义排序以及倒排序的实现
- 解决一个mysql关于按文章以及评论的最早时间的排序问题
- java中的反射以及一个小问题
- Java序列化的机制和原理,以及自定义序列化问题
- solr中一个问题——顺便讨论java中关于中包括main函数以及涉及资源(变量)操作中的类
- Java 实现 堆排序 快速排序 以及 TopK问题(一)
- 如何开发一个java开源框架-----Jvn框架之实现自定义Annotation以及拦截器(第五讲)
- javaWeb自定义可排序过滤器注解,解决Servlet3.0下@WebFilter注解无法排序问题
- java JsonObject的用法以及map总同一个key,但是不同的value,如何存储的问题
- W3wp.exe内存占用问题以及如何查看一个网站对应的w3wp.exe(转)
- java基础—自定义一个比较器,对TreeSet 集合中的元素按指定方法来排序(java集合六)
- JAVA学习中,一个关于Object对象转换时对应方法的问题
- Java 实现 堆排序 快速排序 以及 TopK问题(二)
- java调用linux top命令的方法,以及遇到的一个问题