登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

学无止境

一点积累,与大家分享

 
 
 

日志

 
 

How to sort a Map<Key, Value> on the values in Java?  

2010-05-27 17:02:08|  分类: java技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
public class Main {

   
public static void main(String[] args) {

       
HashMap<String,Double> map = new HashMap<String,Double>();
       
ValueComparator bvc =  new ValueComparator(map);
       
TreeMap<String,Double> sorted_map = new TreeMap(bvc);

        map
.put("A",99.5);
        map
.put("B",67.4);
        map
.put("C",67.5);
        map
.put("D",67.3);

       
System.out.println("unsorted map");
       
for (String key : map.keySet()) {
           
System.out.println("key/value: " + key + "/"+map.get(key));
       
}

        sorted_map
.putAll(map);

       
System.out.println("results");
       
for (String key : sorted_map.keySet()) {
           
System.out.println("key/value: " + key + "/"+sorted_map.get(key));
       
}
   
}

}

class ValueComparator implements Comparator {

 
Map base;
 
public ValueComparator(Map base) {
     
this.base = base;
 
}

 
public int compare(Object a, Object b) {

   
if((Double)base.get(a) < (Double)base.get(b)) {
     
return 1;
   
} else if((Double)base.get(a) == (Double)base.get(b)) {
     
return 0;
   
} else {
     
return -1;
   
}
 
}
}

Output:

unsorted map
key/value: D/67.3
key/value: A/99.5
key/value: B/67.4
key/value: C/67.5
results
key/value: A/99.5
key/value: C/67.5
key/value: B/67.4
key/value: D/67.3

  评论这张
 
阅读(917)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018