A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 那日苏 黑马帝   /  2011-7-23 16:28  /  2438 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

TreeMap(Comparator<? super K> c) 是通过(KEY)值进行排序的,那
是否有办法通过map中(value)值进行排序?如何操作?

评分

参与人数 1技术分 +1 收起 理由
小龙 + 1 继续等待答案哦!

查看全部评分

4 个回复

倒序浏览
黑马网友  发表于 2011-7-23 16:36:57
沙发
看我发表的主题贴里,有个map排序的流程,和另外一个马有的另外一种方法。手机不能贴代码,非常郁闷
回复 使用道具 举报
黑马网友  发表于 2011-7-24 00:00:17
藤椅
其实吧,我没想出来直接用TreeMap按value排序的办法,但是呢,可以用entrySet的方法把所有键值对取出,放入list中,然后用Collections.sort(List list,Comparator comparator)的方法,将list和自定义排序功能的comparator比较器传递进去,就OK了.
我觉得我已经讲得非常赤裸裸了.呵呵,再详细的话就等于上代码了,还是算了吧,说到这里大家应该都会做了.

评分

参与人数 1技术分 +2 收起 理由
小龙 + 2 再接再励!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-24 00:49:31
板凳

回复 藤椅 的帖子

这题我是用数组做的,题已经交上去也面试了。就是像不出办法用value值去排序。
回复 使用道具 举报
黑马网友  发表于 2011-7-24 09:18:39
报纸
楼主你可以去查看一下map接口的源代码,
map内部是按照hash算法存储的,不过我们有时候再项目中需要对map的value值进行排序
可查看下面这个方法试试[code=java]   @SuppressWarnings("unchecked")   
   public static Map.Entry[] getSortedHashtableByValue(Map h) {   
       Set set = h.entrySet();   
       Map.Entry[] entries = (Map.Entry[]) set.toArray(new Map.Entry[set   
               .size()]);   
       Arrays.sort(entries, new Comparator() {   
           public int compare(Object arg0, Object arg1) {   
               Long key1 = Long.valueOf(((Map.Entry) arg0).getValue().toString());   
               Long key2 = Long.valueOf(((Map.Entry) arg1).getValue().toString());   
               return key1.compareTo(key2);   
           }   
       });   
  
       return entries;   
   }[/code]还有貌似TreeMap会自动排序map里面的value值
定义一个TreeMap重写他的[code=java]public V put(K key, V value) [/code]方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马