【发布时间】:2014-05-13 02:20:00
【问题描述】:
如何按数字和字母顺序排列散列映射? 输入:
anna , 1
jane , 2
amy , 3
需要的输出:
amy , 3
anna , 1
jane , 2
Map<String, Integer> myDictionary = new HashMap<String, Integer>();
这是我在 atm 中排序的方式,但它只按字母顺序排序
Set<String> sorted = new TreeSet<String>();
sorted.addAll(myDictionary.keySet());
for(String key: sorted){
System.out.println(key + " -" + myDictionary.get(key));
}
【问题讨论】:
-
我以前的回答:stackoverflow.com/a/22672888/2864740 - 1) 定义
Comparator,2) 不要为此使用 Set,即使是 SortedSet。 (它甚至还有一个“按 .. 然后按 .. 排序”的示例,看看在获胜的情况下如何比较名称。) -
另外,参考。也许:stackoverflow.com/a/3074324/2864740
-
您不对 HashMap 进行排序。您可以对 HashMap 的键进行排序,然后通过排序键访问 HashMap,或者您可以使用 LinkedHashMap 并以某种方式将您的条目按所需的顺序排列。但是标准的 Map 或 Set 没有明确的顺序。
-
你可以参考这些资源stackoverflow.com/questions/109383/…和flowerbrackets.com/sort-hashmap-by-value关于hashmap排序。