【发布时间】:2019-06-28 09:44:53
【问题描述】:
我有长度为 3 的 HashMap
1=>"Value1"
2=>"Value2"
3=>"Value3"
现在我想将所有键减 1(如果键>1): 输出:
1=>"Value2"
2=>"Value3"
我正在尝试什么
for (e in hashMap.entries) {
val entry = e as Map.Entry<*, *>
var keyPos = (entry.key as Int)
if (keyPos != -1) {
if (keyPos > 1) {
keyPos = keyPos - 1
if (keyPos != -1) {
hashMap.put(keyPos, entry.value as String?)
}
}
}
}
但它没有提供所需的输出。
如何让它在没有并发异常的情况下工作。
【问题讨论】:
-
使用两张地图,创建一个与众不同的副本
-
你试过
Iterator吗? -
在for里面使用迭代器会产生并发异常
-
您无法更新
Map密钥,您只能删除旧密钥并使用新密钥插入其值。 -
或者你可以先获取第三个键的值,然后更新第二个键的值
标签: java android kotlin concurrency hashmap