在哈希映射中递增整数

2022-09-01 06:21:43

我是否必须返回对象,然后再放入新对象?或者我可以直接递增吗?

Integer temp = myMap.get(key);
temp++;
myMap.put(key, temp);

没有办法只是这样做(这不起作用):

myMap.get(key)++;

答案 1

这是完成此作业的最短代码。

myMap.put(key, myMap.get(key) + 1)

我认为不会太长。


答案 2

在Java 8中,有一些新方法可以与lambdas一起使用来解决这个问题。第一种选择是计算Map

a.compute(key, (k, v) -> v+1);

请注意,这仅在为所有可能的键初始化哈希时才有效。

如果不能保证这一点,您可以将上述代码更改为:

a.compute(key, (k, v) -> v == null ? 1 : v + 1);

或者使用合并方法(我更喜欢):

a.merge(key, 1, (a, b) -> a + b);

也许还有更多我不知道的基于lambda的方法。