【发布时间】:2018-12-19 07:27:04
【问题描述】:
所以我对 Java 的 Map computeIfAbsent(使用 java8)方法感到好奇,我希望有人能告诉我为什么会这样,因为我无法真正理解该问题背后的逻辑。
所以,我有一个带键的 Map(显然),值是一个列表,当尚未设置键时,我使用 computeIfAbsent 创建一个新列表。现在,当我使用整数作为键时,我可以使用以下内容:
List<Object> list = map.computeIfAbsent(1, ArrayList::new);
但是当我使用字符串作为键尝试使用时
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) 的错误。只是缺少实现吗?使用 String 键,我必须使用类似的方法,然后再次工作。
List<Object> list = map.computeIfAbsent("key", k -> new ArrayList<>());
也许有人可以启发我。谢谢:)
【问题讨论】:
-
附带说明,Guava 的
MultiMap已经实现了您正在寻找的内容。 -
为了清楚问题,值得一提的是代码中使用的
map的类型 -
我很确定这是重复的,但很难找到:-/
-
啊,它是:stackoverflow.com/q/35296734/3182664 - 有任何反对将这个作为另一个副本关闭吗?
标签: java java-8 functional-programming