gpt4 book ai didi

java - 为什么我不能使用 LinkedList::new?

转载 作者:行者123 更新时间:2023-12-02 12:19:55 27 4
gpt4 key购买 nike

假设我有一个 HashMap 为 Map<Integer, List<Integer>> map = new HashMap<>(); .

现在List<Integer> values = computeIfAbsent(key, ArrayList::new);工作完美但是 List<Integer> values = computeIfAbsent(key, LinkedList::new);抛出编译错误。

我可以在 ArrayList 和 LinkedList 中看到无参数构造函数。我在这里缺少什么,有人可以解释这种行为吗?

最佳答案

您可能想要做的是将初始化的lambda表达式指定为:

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);

编译后,它有一个constructor accepting int argument但请注意它的列表容量。

关于java - 为什么我不能使用 LinkedList::new?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55038099/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com