java - 无法在 Java 中将 ArrayList 的 ArrayList 实例化为列表的列表

标签 java arraylist

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

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继承的接口(interface)。那么,为什么我可以实例化一个列表的 ArrayList 并且没问题,但我无法实例化一个 ArrayList 的 ArrayList?

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

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

最佳答案

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

原因是 List<List<Integer>>您应该能够添加 LinkedList<Integer>到。但你不能添加 LinkedList<Integer>ArrayList<ArrayList<Integer>>因为它的类型错误。

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

关于java - 无法在 Java 中将 ArrayList 的 ArrayList 实例化为列表的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50939292/

相关文章:

java - Hibernate 映射多个子类并从最小子类获取 super 父类数据

java - Windows 操作系统命令不在 Spring Shell 中执行

java - 关于 ArrayList 和泛型类型

java - 数组未定位右行 [Java]

java - 计数变量不起作用

java - 使用空闲实例和挂起的延迟设置进行 AppEngine 性能调整

java - 我的 NavigationDrawer 中的 TextView 文本垂直剪切

java - 正确处理多点触摸事件android

java - 从 ArrayList 中删除特定字符串

java - 在java中合并json对象