public class TestClass {
public static void main(String[] args)
{
HashMap<String,Integer> testMap = new HashMap<String,Integer>();
testMap.put("Key1", 1);
testMap.put("Key2", 2);
testMap.put("Key3", 3);
testMap.put("Key4", 4);
testMap.put("Key5", 5);
//[Key2, Key1, Key4, Key3, Key5] //java7
//[Key2, Key1, Key5, Key4, Key3] //java8
System.out.println(testMap.keySet().toString());
}
}
为什么钥匙的顺序不同?
为什么钥匙的顺序不同?
因为:
-
Java规范(即javadocs(没有指定HashMap的密钥集和的顺序
-
在Java 7和Java 8之间,HashMap的实现发生了重大变化。
这些实现更改(带来了显著的性能改进(导致密钥集的顺序发生了更改。
但这并不被视为"突破性"更改,因为密钥集顺序始终被明确标记为未指定。。。。这意味着你不应该依赖它。
不能保证按照规范进行订购。单个VM可以自由实现他们选择的任何东西。
Hashmap不维护顺序,如果您想要有序插入,可以使用linkedhashmap:(
Map接口的基于哈希表的实现。此实现提供了所有可选的映射操作,并允许null值和null键。(HashMap类大致相当于Hashtable,只是它不同步并且允许null。(这个类对映射的顺序没有任何保证;特别是,它不能保证订单在一段时间内保持不变。