LinkedList 的“类型不兼容:无法推断类型变量”

Cod*_*eve 2 java deque

incompatible type: cannot infer type-variable(s) E (actual and formal argument lists differ in length)从以下代码的第二个语句中得到错误,

Deque<TreeNode>[] stacks = new Deque[2];
Arrays.set(stacks, LinkedList::new);
Run Code Online (Sandbox Code Playgroud)

但是,用 ArrayDeque 替换 LinkedList 修复了错误,

Arrays.set(stacks, ArrayDeque::new);
Run Code Online (Sandbox Code Playgroud)

无论LinkedListArrayDeque实现Deque接口。我很困惑为什么它适用于ArrayDeque但不适用于LinkedList

Šim*_*rek 5

不同之处在于您传递的构造函数:

public LinkedList(Collection<? extends E> c);
public LinkedList();
Run Code Online (Sandbox Code Playgroud)
public ArrayDeque(int numElements);
Run Code Online (Sandbox Code Playgroud)

展开后得到:

Arrays.setAll(stacks, index -> new LinkedList<TreeNode>(index));
Run Code Online (Sandbox Code Playgroud)
Arrays.setAll(stacks, index -> new ArrayDeque<>(index));
Run Code Online (Sandbox Code Playgroud)

哪里LinkedList没有构造函数带int index
要解决您的问题,只需编写(index数组中的索引):

Arrays.setAll(stacks, index -> new LinkedList<TreeNode>());
Run Code Online (Sandbox Code Playgroud)