例如,我输入3个字符串:Hagzou Hugzou Jigxng作为HashMap的键,
但是当我按键遍历HashMap时,订单已被更改:Hugzou Hagzou Jigxng。
输出密钥时是否可以确保订单无法更改?
像这样:
输入:Hagzou Hugzou Jigxng ###
输出:Hagzou Hugzou Jigxng
很多!
这是我的代码:
HashMap< String, Integer > distance = new HashMap< String, Integer >();
Scanner input = new Scanner(System.in);
while (true) {
String city = input.next();
if (city.equals("###"))
break;
distance.put(city, null);
}
for (String city : distance.keySet()) {
System.out.println(city);
}
答案 0 :(得分:1)
您可以使用LinkedHashMap
:
使用Hash表和Map接口的链表实现 可预测的迭代顺序。此实现与HashMap不同 因为它维护着一个贯穿所有链接的双向链表 条目。该链表定义了迭代排序,即 通常是键插入地图的顺序 (插入顺序)。请注意,如果键是插入顺序不受影响 被重新插入地图。 (如果将密钥k重新插入到地图m中 当m.containsKey(k)返回true时,调用m.put(k,v) 在调用之前。)
换句话说 - 虽然LinkedHashMap
有一种通过哈希码访问条目的方法,但是常规HashMap
它也维护一个双向链表,并维护项插入的顺序。这样,当您使用其迭代器时,您将按照插入它们的顺序获取项目。