Java 在地图中循环时,如何确定顺序
我有一个关于哈希映射序列的问题。例如,在以下代码中:Java 在地图中循环时,如何确定顺序,java,hashmap,Java,Hashmap,我有一个关于哈希映射序列的问题。例如,在以下代码中: public class MapEntrySetOrder { public static void main(String[] args) { Map<String,String> map = new HashMap<>(); String[] l = new String[]{"Entry", "Set", "HashMap&
public class MapEntrySetOrder {
public static void main(String[] args) {
Map<String,String> map = new HashMap<>();
String[] l = new String[]{"Entry", "Set", "HashMap", "Order"};
for (String s : l) {
map.putIfAbsent(s, s);
}
for(Map.Entry<String, String> e : map.entrySet()) {
System.out.println("key:" + e.getKey());
}
}
}
那么订单是如何决定的呢。如果是随机的,为什么每次打印结果都是相同的?
Hashmap
不保证任何顺序。
如果您想使用有序序列,请改用。对于快速非有序映射,请使用HashMap 使用LinkedHashMap获取添加到映射的顺序 将TreeMap用于您希望的任何顺序(使用Comparator实现)
另外,我认为您每次都有相同的顺序,因为您使用的是
map.entrySet()
而不是map.keySet()
如果是随机的,它将被称为RandomMap
。重要的是,使用HashMap的编码人员知道他们不能依赖顺序。也许你可以在HashMap源代码中找到你的答案?这能回答你的问题吗?为什么每次打印结果都一样?在不同的java版本上尝试一下,您会发现其中的差异。Hashmap中的顺序无法保证
key:Order
key:Entry
key:Set
key:HashMap