我的日常

登录/注册
您现在的位置:论坛 资料库 JAVA开发 > HashMap 的 value 进行排序
总共48087条微博

动态微博

查看: 1089|回复: 1

HashMap 的 value 进行排序

[复制链接]

6

主题

0

听众

134

金钱

三袋弟子

该用户从未签到

跳转到指定楼层
楼主
发表于 2015-04-07 09:31:21 |只看该作者 |倒序浏览
  1. import java.util.*;

  2. /**
  3. * 根据 HashMap 的 value 进行排序
  4. * @author Winter Lau
  5. * @date 2009-11-24 下午01:35:37
  6. */
  7. public class SortByValueDemo {

  8.     public static void main(String[] args) {
  9.          
  10.         HashMap<String, Integer> datas = new HashMap<String, Integer>(){{
  11.             put("Winter Lau", 100);
  12.             put("Yier", 150);
  13.             put("Nothing", 30);
  14.             put("Zolo", 330);
  15.         }};
  16.          
  17.         ByValueComparator bvc = new ByValueComparator(datas);
  18.          
  19.         //第一种方法
  20.         TreeMap<String, Integer> sorted_map = new TreeMap<String, Integer>(bvc);
  21.         sorted_map.putAll(datas);
  22.          
  23.         for(String name : sorted_map.keySet()){
  24.             System.out.printf("%s -> %d\n", name, datas.get(name));
  25.         }

  26.         //第二种方法
  27.         List<String> keys = new ArrayList<String>(datas.keySet());
  28.         Collections.sort(keys, bvc);
  29.         for(String key : keys) {
  30.             System.out.printf("%s -> %d\n", key, datas.get(key));
  31.         }
  32.     }

  33.     static class ByValueComparator implements Comparator<String> {
  34.         HashMap<String, Integer> base_map;

  35.         public ByValueComparator(HashMap<String, Integer> base_map) {
  36.             this.base_map = base_map;
  37.         }

  38.         public int compare(String arg0, String arg1) {
  39.             if (!base_map.containsKey(arg0) || !base_map.containsKey(arg1)) {
  40.                 return 0;
  41.             }

  42.             if (base_map.get(arg0) < base_map.get(arg1)) {
  43.                 return 1;
  44.             } else if (base_map.get(arg0) == base_map.get(arg1)) {
  45.                 return 0;
  46.             } else {
  47.                 return -1;
  48.             }
  49.         }
  50.     }

  51. }
复制代码



科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表