黑马程序员技术交流社区

标题: 遇到一个问题卡了很久,求问map集合中排序的问题。 [打印本页]

作者: zippo    时间: 2014-8-2 20:01
标题: 遇到一个问题卡了很久,求问map集合中排序的问题。
本帖最后由 zippo 于 2014-8-2 22:47 编辑

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

作者: icris    时间: 2014-8-2 20:24
本帖最后由 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:修改了一个错误





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