То, что вы, вероятно, намереваетесь сделать, это указать выражение lamba для инициализации как:
List<Integer> values = map.computeIfAbsent(key, a -> new ArrayList<>());
или
List<Integer> values = map.computeIfAbsent(key, a -> new LinkedList<>());
Причина, по которой код
List<Integer> values = computeIfAbsent(key, LinkedList::new);
не скомпилируется, так как конструктор, ближайший к текущему синтаксису с одним аргументом, ожидает Collection<? extends E> c
вместо Integer
, следовательно, он не может быть разрешен.
С другой стороны, причина, по которой
List<Integer> values = map.computeIfAbsent(key, ArrayList::new);
скомпилируется, у него есть конструктор, принимающий int
аргумент , , но обратите внимание на вместимость списка.