Suj*_*jan 4 java sorting hashmap data-structures
根据这些:
该HashMap
中Java
应该是未排序的,但它被相对于分类Key
.
我认为这是一个问题,因为我需要插入订单数据.所以,我用了LinkedHashMap
.但我仍然困惑为什么HashMap
排序它.
有人能解释一下吗?
我做了一个简单的例子来查看排序.
public static void main(String[] args) {
HashMap<Integer, String> newHashMap = new HashMap<Integer, String>();
newHashMap.put(2, "First");
newHashMap.put(0, "Second");
newHashMap.put(3, "Third");
newHashMap.put(1, "Fourth");
Iterator<Entry<Integer, String>> iterator = newHashMap.entrySet()
.iterator();
while (iterator.hasNext()) {
Map.Entry<Integer, String> entry = iterator.next();
System.out.println("Key: " + entry.getKey());
System.out.println("Value: " + entry.getValue());
iterator.remove();
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
Key: 0
Value: Second
Key: 1
Value: Fourth
Key: 2
Value: First
Key: 3
Value: Third
Run Code Online (Sandbox Code Playgroud)
编辑:
我试图插入使用50支随机数Random
的Java
,我发现了一些数据未排序.但是,它仍然设法对大多数整数进行排序.
随机结果:
...
Key: 36
Value: random
Key: 43
Value: random
Key: 47
Value: random
Key: 44
Value: random
Key: 45
Value: random
...
Run Code Online (Sandbox Code Playgroud)
这是巧合(不是真的,而是与散列算法有关).
尝试添加
newHashMap.put(-5, "Fifth");
Run Code Online (Sandbox Code Playgroud)
最后.
输出将是
Key: 0
Value: Second
Key: 1
Value: Fourth
Key: 2
Value: First
Key: 3
Value: Third
Key: -5
Value: Fifth
Run Code Online (Sandbox Code Playgroud)
javadoc特别说
这个类不保证地图的顺序; 特别是,它不保证订单会随着时间的推移保持不变.