flu*_*y03 2 java arrays list arraylist hashmap
我想对HashMap<String, Integer>属于ArrayList<HashMap<String, Integer>>. 但我得到了以下错误:无效的参数来操作++ / -这样做的部份时,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);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我必须将代码更改为以下代码,并且它可以工作:
if (logEntry.containsKey(key)) {
Integer tempValue = logEntry.get(key);
tempValue++;
logEntry.remove(key);
logEntry.put(key, tempValue);
} else {
logEntry.put(key, 1);
}
Run Code Online (Sandbox Code Playgroud)
但这增加了许多额外的操作。我可以避免这种情况吗?另外,我认为我这样做的方式太复杂或愚蠢,有没有更简单的方法?
正如其他答案已经指出的那样,您不能直接改变密钥。但是您可以进一步缩短代码:
logEntry.put(key, logEntry.containsKey(key) ? logEntry.get(key) + 1 : 1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2110 次 |
| 最近记录: |