Итак, я обнаружил любопытство с помощью метода Java Map computeIfAbsent
(с использованием java8), и я надеюсь, что кто-то может сказать мне, почему это происходит, поскольку я не могу в действительности следовать логике этой проблемы.
Итак,У меня есть карта с ключом (очевидно), и значением является список, и я использую computeIfAbsent, чтобы создать новый список, когда ключ еще не установлен.Теперь, когда я использую Integer в качестве ключа, я могу использовать следующее:
List<Object> list = map.computeIfAbsent(1, ArrayList::new);
Но когда я использую String в качестве ключа, пытаясь использовать
List<Object> list = map.computeIfAbsent("key", ArrayList::new);
, я получаю ошибку, что The method computeIfAbsent(String, Function<? super String,? extends List<Object>>) in the type Map<String,List<Object>> is not applicable for the arguments (String, ArrayList::new)
.Не хватает только реализации?Используя строковый ключ, я должен использовать такой метод, который затем снова работает.
List<Object> list = map.computeIfAbsent("key", k -> new ArrayList<>());
Может быть, кто-то может просветить меня об этом.Спасибо:)