首页 > 解决方案 > 无法将 ArrayList 的 ArrayList 实例化为 Java 中的列表列表

问题描述

我有一个返回整数列表列表的函数

public List<List<Integer>> threeSum(int[] nums)

显然我不能直接实例化一个 List 所以我选择使用一个 ArrayList 并试图实例化我的返回值:

List<List<Integer>> ans = new ArrayList<ArrayList<Integer>>();

上面没有工作,但这样做了:

List<List<Integer>> ans = new ArrayList<List<Integer>>();

我的理解是,这List是一个 ArrayList 继承自的接口。那么,为什么我可以实例化列表的 ArrayList 并且可以,但我不能实例化 ArrayList 的 ArrayList?

为了便于阅读,我的函数的前几行如下所示:

public List<List<Integer>> threeSum(int[] nums) {
    List<List<Integer>> ans = new ArrayList<List<Integer>>();
    if (nums.length < 3) return ans;

标签: javaarraylist

解决方案


这是因为 anArrayList<ArrayList<Integer>>不是List<List<Integer>>.

原因是 aList<List<Integer>>是您应该能够添加 a 的东西LinkedList<Integer>。但是您不能将 a 添加LinkedList<Integer>到 anArrayList<ArrayList<Integer>>因为它的类型错误。

因此,如果你有一个ArrayList<ArrayList<Integer>>,你永远不能把它当作一个List<List<Integer>>,或者用一个类型的变量来引用它List<List<Integer>>


推荐阅读