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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 zippo 于 2014-8-2 22:47 编辑

求问map集合中如何运用比较器对value的值进行排序呢?

1 个回复

倒序浏览
本帖最后由 icris 于 2014-8-2 20:40 编辑
  1. public static void main(String[] args) {
  2.     final HashMap<String, Integer> map = new HashMap<String, Integer>();
  3.     map.put("a", 2);
  4.     map.put("b", 1);
  5.     map.put("c", 1);
  6.     System.out.println(map);
  7.     TreeMap<String, Integer> treeMap = sortByValue(map);
  8.     System.out.println(treeMap);
  9. }

  10. private static TreeMap<String, Integer> sortByValue(
  11.         final HashMap<String, Integer> map) {
  12.     TreeMap<String, Integer> treeMap = new TreeMap<String, Integer>(
  13.             new Comparator<String>() {
  14.                 public int compare(String o1, String o2) {
  15.                     Integer i1 = map.get(o1);
  16.                     Integer i2 = map.get(o2);
  17.                     if (!i1.equals(i2))
  18.                         return i1.compareTo(i2);
  19.                     return o1.compareTo(o2);
  20.                 }
  21.             });
  22.     treeMap.putAll(map);
  23.    
  24.     return treeMap;
  25. }
复制代码


一个小测试,像这样把要排序的 map 传进来就行了吧,泛型按需要改一下
update:修改了一个错误

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马