java - 无法将 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;
解决方案
这是因为 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>>
推荐阅读
- scala - PySpark:如何更新嵌套列?
- node.js - 如果 mongodb 类型为字符串,则查询仅返回文档
- javascript - 与内存相关的node.js框架错误中的执行
- python - 这两个tensorflow文档中关于repeat和shuffle有冲突吗?
- php - PHP SMTP Office 365 - 发送附件
- python - video.supersample 不存在
- python - 我正在寻找一种方法来从以前的列表中创建一个新列表,但只使用我想要的单词
- node.js - 是否可以在没有重定向的情况下使用 404 http 代码呈现“找不到页面”?
- python - 如何修复 Windows 转义字符在 python 中无法正常工作?
- java - Beam 写入 avro 文件序列化错误