use*_*961 2 java data-structures
我有一个包含一些名称和数字的地图
Map<String,Integer> abc = new HashMap<String,Integer>();
Run Code Online (Sandbox Code Playgroud)
它工作正常.我可以在其中加入一些值,但是当我在不同的类中调用它时,它会给我错误的顺序.例如:
我推了推
abc.put("a",1);
abc.put("b",5);
abc.put("c",3);
Iterator<String> iter = abc.keySet().iterator();
while (iter.hasNext()) {
String name = iter.next();
System.out.println(name);
}
Run Code Online (Sandbox Code Playgroud)
一段时间它返回顺序(b,a,c)和一些时间(a,c,b).
这有什么问题?当我打电话给这张地图时,有什么步骤我不知道了吗?
编辑:我改为HashMap,结果仍然相同
唯一不对的是你的期望.所述Map接口使得没有关于迭代顺序保证,并且HashMap实现是基于散列函数,这意味着迭代顺序基本上是随机的,和当添加新的元素有时会彻底改变.
如果您想要特定的迭代订单,您有以下选项:
SortedMap具有TreeMap实现的接口- 这些接口根据密钥的自然顺序(或Comparator实例强加的排序)保证迭代顺序LinkedHashMap的顺序遍历类的元素加入到地图.List代替a Map- 这具有明确定义的迭代顺序,您可以详细地影响它.| 归档时间: |
|
| 查看次数: |
1213 次 |
| 最近记录: |