黑马程序员技术交流社区

标题: TreeMap怎么实现按Value排序? [打印本页]

作者: 赵江锋    时间: 2011-9-28 16:33
标题: TreeMap怎么实现按Value排序?
TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>()
TreeMap能根据value来排序吗?
作者: 匿名    时间: 2011-9-28 16:43
TreeMap集合本身是按照key来进行排序的,如果你真的要想安装value进行排序的话,可以让value的值实现Comparable接口,这样就具备了比较性。
作者: 匿名    时间: 2011-9-28 16:46
标题: 回复 楼主 的帖子
java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap
Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。
TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。
一般情况下,我们用的最多的是HashMap,HashMap里面存入的键值对在取出的时候是随机的,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。在Map 中插入、删除和定位元素,HashMap 是最好的选择。
TreeMap取出来的是排序后的键值对。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。
作者: 匿名    时间: 2011-9-28 16:49
这个我也研究过,不过查了些代码发现,是把TreeMap对象的entrySet()做成List,然后用Collections类的sort方法排序的,而且要用带比较器参数的那个sort,并且比较器要重写compare方法,实现value的比较
作者: 匿名    时间: 2011-9-29 01:27
试了下确实是这样[quote] 原帖由 [i]邢勇[/i] 于 2011-09-28 16:49 发表 [url=http://bbs.itheima.com/redirect.jsp?goto=findpost&pid=11429&ptid=1822][img]http://bbs.itheima.com/images/common/back.gif[/img][/url]这个我也研究过,不过查了些代码发现,是把TreeMap对象的entrySet()做成List,然后用Collections类的sort方法排序的,而且要用带比较器参数的那个sort,并且比较器要重写compare方法,实现value的比较 [/quote]




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2