java - 为什么在尝试增加值并将其放回 HashMap 时会引发编译错误?

标签 java hashmap hashtable

在最后一行中,我试图获取值,增加它然后再放回去。问题:

  1. 为什么会引发编译错误“Invalid argument to operation++/--”

  2. 为了增加这个特定示例中的值,是否有更好的方法?

    Map<String, Integer> map = new HashMap<>();
    map.put("hello", 4);
    // we wanna get 4 to increase it
    map.put("hello",++(map.get("hello"))); // Invalid argument to operation ++/--
    

最佳答案

您只能对变量执行++(不能对任意表达式)。使用 ... + 1 代替:

map.put("hello", map.get("hello") + 1);

或者,如果您使用的是 Java 8:

map.merge("hello", 1, (a,b) -> a + b));

(请注意,Java 没有任何与 C++ 引用相对应的功能。)

关于java - 为什么在尝试增加值并将其放回 HashMap 时会引发编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29723472/

相关文章:

java - 使用 Jsoup 进行屏幕抓取来提取句子

java - 为什么我的Key中的 '1'位越多,放到HashMap中的时间就越长?

algorithm - 就时空复杂度而言,哪种解决方案更好?

c - 带有 bug 的链表的哈希表

c# - HashTable 编译错误(缺少强制转换?)

java - 如何避免将 Spring Boot Fat jar 安装/部署到 Maven 仓库

java - 使用类 API 获取特定类(class)的老师

powershell - 带点的哈希表键

java - 模拟需要在单元测试中测试的同一类的静态方法

java - 如何使用 <Integer,HashMap<Integer,Integer> 的 HashMap 添加增量值