操作的无效参数 ++/--

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)

但这增加了许多额外的操作。我可以避免这种情况吗?另外,我认为我这样做的方式太复杂或愚蠢,有没有更简单的方法?

Mod*_*ens 5

正如其他答案已经指出的那样,您不能直接改变密钥。但是您可以进一步缩短代码:

logEntry.put(key, logEntry.containsKey(key) ? logEntry.get(key) + 1 : 1);
Run Code Online (Sandbox Code Playgroud)