将条目提取到列表中,然后对列表进行排序:
List<Map.Entry<String, String>> entries = new ArrayList<Map.Entry<String, String>>(map.entries());Collections.sort(entries, new Comparator<Map.Entry<String, String>>() { @Override public int compare(Map.Entry<String, String> e1, Map.Entry<String, String> e2) { return Ints.compare(map.get(e2.getKey()).size(), map.get(e1.getKey()).size()); }});然后遍历条目。
编辑:
如果您实际上想要遍历内部映射(
Entry<String, Collection<String>>)的条目,请执行以下操作:
List<Map.Entry<String, Collection<String>>> entries = new ArrayList<Map.Entry<String, Collection<String>>>(map.asMap().entrySet());Collections.sort(entries, new Comparator<Map.Entry<String, Collection<String>>>() { @Override public int compare(Map.Entry<String, Collection<String>> e1, Map.Entry<String, Collection<String>> e2) { return Ints.compare(e2.getValue().size(), e1.getValue().size()); }});// and now iteratefor (Map.Entry<String, Collection<String>> entry : entries) { System.out.println("Key = " + entry.getKey()); for (String value : entry.getValue()) { System.out.println(" Value = " + value); }}


