如何在放入java HashMap时避免重新排序项目

时间:2011-09-06 19:07:48

标签: java hashmap

我正在创建一个新的Map并将字符串推入其中(没什么大不了的) - 但我注意到随着地图的增长,字符串正在被重新排序。是否可以停止这种重新排序,以便地图中的项目保留所放置的顺序?

Map<String,String> x = new HashMap<String, String>();
x.put("a","b");
x.put("a","c");
x.put("a","d");

x.put("1","2");
x.put("1","3");
x.put("1","4");

//this shows them out of order sadly...
for (Map.Entry<String, String> entry : x.entrySet()) {
    System.out.println("IN THIS ORDER ... " + entry.getValue());
}

4 个答案:

答案 0 :(得分:16)

如果您关心订单,可以使用SortedMap。实现接口的实际类(至少在大多数情况下)是TreeMap。或者,LinkedHashMap也保持其顺序,同时仍然使用基于散列表的容器。

答案 1 :(得分:8)

您可以将其与LinkedHashMap保持一致。

答案 2 :(得分:6)

答案 3 :(得分:4)

之前的答案是正确的,因为您应该使用维护排序的Map实现。 LinkedHashMap和SortedMap各自执行这些操作。

然而,要点是并非所有馆藏都维持秩序,如果订单对您很重要,您应该选择合适的实施方案。 Generic HashMaps不维护订单,不声明这样做,也不能设置这样做。