在Java中遍历HashMap时如何确保键的顺序不能改变? [复制]
Posted
技术标签:
【中文标题】在Java中遍历HashMap时如何确保键的顺序不能改变? [复制]【英文标题】:How to make sure the key's order can not be changed when traversing a HashMap in Java? [duplicate] 【发布时间】:2015-10-27 23:12:40 【问题描述】:例如,我输入 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);
【问题讨论】:
使用LinkedHashMasp 【参考方案1】:你可以使用LinkedHashMap
:
Map接口的哈希表和链表实现,带有 可预测的迭代顺序。此实现不同于 HashMap 因为它维护一个双向链表,贯穿其所有 条目。这个链表定义了迭代顺序,即 通常是键插入地图的顺序 (插入顺序)。请注意,如果键不影响插入顺序 被重新插入到地图中。 (如果键 k 被重新插入到映射 m 中,则 当 m.containsKey(k) 返回 true 时调用 m.put(k, v) 在调用之前。)
换句话说 - 虽然LinkedHashMap
有一种通过哈希码访问条目的方法,就像常规的HashMap
一样,它也维护一个双向链表并维护项目插入的顺序。这样,当您使用它的迭代器时,您将按照插入它们的顺序获取项目。
【讨论】:
以上是关于在Java中遍历HashMap时如何确保键的顺序不能改变? [复制]的主要内容,如果未能解决你的问题,请参考以下文章