如何让 ComputeIfPresent 在 Map 中使用 Map?
2022-09-03 06:28:08
当尝试使用 computeIfPresent() 方法更改 Map 时,我在使用 innerMap 时无法实现此方法。
这有效:
Map<String, Integer> mapOne = new HashMap<>();
mapOne.computeIfPresent(key, (k, v) -> v + 1);
这不起作用:
Map<String, Map<String, Integer>> mapTwo = new HashMap<>();
mapTwo.computeIfPresent(key, (k, v) -> v.computeIfPresent(anotherKey, (x, y) -> y + 1);
在第二个示例中,我收到以下错误消息:“lambda 表达式中的返回类型错误:整数无法转换为”。我的 IDE 将 v 识别为映射。但该函数不起作用。Map<String, Integer>
显然,该方法返回一个整数,但我看不出这与没有Innermap的第一个方法有何不同。到目前为止,我还没有在网上找到类似的案例。
我怎样才能让它工作?