我想对 HashMap<String, Integer>
做一些操作属于 ArrayList<HashMap<String, Integer>>
.但我收到以下错误:Invalid argument to operation++/-- when doing ths logEntry.get(key) ++
如下:
....
Integer tempSize = ...;
List<HashMap<String, Integer>> tokenCollection = new ArrayList<>(tempSize);
while(tokenCollection.size() < tempSize) {
tokenCollection.add(new HashMap<String, Integer>());
}
....
for (int i = 0; i < tempSize; i++) {
String key = ...;
HashMap<String, Integer> logEntry = tokenCollection.get(i);
if (logEntry.containsKey(key)) {
logEntry.get(key) ++; // ERROR
} else {
logEntry.put(key, 1);
}
}
然后,我必须将代码更改为以下代码,它才有效:
if (logEntry.containsKey(key)) {
Integer tempValue = logEntry.get(key);
tempValue++;
logEntry.remove(key);
logEntry.put(key, tempValue);
} else {
logEntry.put(key, 1);
}
但这增加了很多额外的操作。我可以避免这种情况吗?另外,我认为我这样做的方法太复杂或愚蠢,有没有更简单的方法?
最佳答案
正如其他答案所述,您不能直接改变 key 。 但是您可以进一步缩短代码:
logEntry.put(key, logEntry.containsKey(key) ? logEntry.get(key) + 1 : 1);
关于java - 操作++/-- 的参数无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35623981/