HashMap can keep always the same order?
我想知道我的HashMap集合是否总是在同一个订单上
1 2 3 4 5 6 7 8 9 10 11 12
| Map <Integer, Long > map = new HashMap <Integer, Long >(0);
for(Integer key : users ) {
map. put( key , (long) 0 );
}
for( ... ){
...
if( ... ) ){
map. put( t. get(key ) , map. get(key ) + 1);
}
} |
我用ajax将此集合发送到javascript
1 2 3
| $.each( jsonData[i].totalMap , function(key, value) {
rows.push(value);
}); |
我将它们放在我的控制器中,它将始终与Map元素的顺序相同吗?
-
你能详细说明你的用例吗? 如果您需要依赖此行为但不需要特定的排序,我怀疑您的设计可能会以某种方式存在缺陷。 除了发布的答案,还有SortedMap s
-
为了安全,我将使用LinkedHashMap,因为我在控制器中初始化我的地图时的相同顺序我希望它在javascript代码中迭代我的地图
如果键和值始终相同,则映射大小相同,HashMap以相同方式初始化,然后是。 但是,对于保证的迭代顺序,请使用LinkedHashMap。
-
在给定的系统上。:)。 同一实例可以在不同的机器上具有不同的哈希码
-
确切地说,在给定的VM /版本上。
-
@Kayaman - 不。 对于某些类,每次运行应用程序时,通常会获得不同的哈希码。 (相同的硬件,JVM版本等)
-
@StephenC True,但这里的Integer / Long在给定系统上是确定性的。 不是说我会信任或推荐其他人相信;)
-
谢谢你的安全帮助我将使用LinkedHashMap,因为我在控制器中初始化我的地图时的相同顺序我希望它在javascript代码中迭代我的地图时。
-
对于Integer类,哈希码被指定为与包装值相同。 你可以相信。 但Integer在这方面并不常见。
如果使用LinkedHashMap,则将保留顺序(即,默认情况下,键将始终按照它们插入Map中的顺序进行迭代)。
-
谢谢man :)为了安全,我将使用LinkedHashMap,因为我在控制器中初始化我的地图时的相同顺序我希望它在javascript代码中迭代我的地图时。