При попытке изменить карту с помощью метода computeIfPresent() у меня возникла проблема с реализацией этого метода, когда я использую 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);
Во втором примере я получаю следующее сообщение об ошибке: "Неверный тип возврата в выражении лямбда: Integer не может быть преобразован в Map<String, Integer>
". Моя IDE распознает v как карту. Но функция не работает.
По-видимому, метод возвращает Integer, но я не вижу, как это отличается от первого метода без Innermap. До сих пор я не нашел подобного случая в Интернете.
Как я могу заставить это работать?