当前位置: 首页 > 知识库问答 >
问题:

无法理解如何在java中定义列表列表[重复]

司徒浩思
2023-03-14

我想了解这两个定义之间的区别,以及为什么正确的定义是正确的,而错误的定义是错误的。

向我显示编译错误的那个

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

它给我的错误是:

 try2.java:8: error: incompatible types: ArrayList<ArrayList<Integer>> cannot be
converted to List<List<Integer>>
                List<List<Integer>> arr2 = new ArrayList<ArrayList<Integer>>();

正在工作的:

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

注意:

我明白为什么下面的方法有效:

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

编辑-1:

现在我只想了解List有什么问题


共有2个答案

包承望
2023-03-14

您可以使用菱形运算符,正如GhostCat所建议的那样,让编译器担心正确的类型。

但如果您想了解正确的类型,请使用:

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

您正在实例化某物的List(让我们暂时忘记某物碰巧是List

元素类型(我所谓的“某物”)-List

现在,当您想将元素添加到<code>List</code>时,需要创建一个实现<code>列表的类的实例

List<Integer> inner = new ArrayList<Integer>();
arr2.add(inner);

查宜民
2023-03-14

你不需要这些:

List<List<Whatever>> items = new ArrayList<>();

成交。

要了解的重要一点是:您不能创建那些“内部”列表。您只需创建一个列表(类型为“列表列表”)。稍后,您将执行以下操作:

List<Whatever> innerItems = new ArrayList<>();
items.add(innerItems);

比如说。原因是:集合不是数组。Java允许你写下表达式来创建一个完整的二维数组。但是集合没有多维度的概念(实现方面)!

其中一部分是泛型实际上是使用类型擦除实现的。这意味着:实际的列表实现不知道您在源代码中使用的泛型类型。它只处理对象的实例。从这个意义上说,实现不可能“知道”新列表应该包含列表

 类似资料:
  • 问题内容: 我想从列表列表中删除所有重复列表。 所以我有一个这样的清单清单。 我希望有: 我不知道该怎么办。 谢谢 问题答案: 您可以使用一组: 或者,如果您更喜欢列表推导/生成器: 最后,如果顺序很重要,则可以始终对b进行排序:

  • 我有以下API调用 失败是因为 现在我明白了,我必须多次调用以删除Cloud watch的Insight规则,每20个块。 所以从概念上来说,我在寻找 现在,我在java 8 streams api中找不到任何允许我将列表分块处理的东西。有点像scala分组功能将列表拆分为多个元素数目固定的列表。 有人能帮我解决这个问题吗?谢谢当然,我可以使用命令式样式和子列表,但如果可以的话,我宁愿避免这样做。

  • 我不熟悉java和springboot。我正在尝试使用springboot创建一个CRUD应用程序。我使用MySQL存储数据。 员工模式- 员工资源库- 员工控制员- 上面的控制器在JSON对象数组表单中给出了结果,如下所示 但我需要以下表格的回复 非常感谢你的帮助。

  • 我有一个熊猫数据框,其中一列由列表组成: 我想添加,例如,每个列表的第一个和最后一个索引。为此,我使用: 这分别作用于每一行,如果数据帧很大,这可能会非常密集。有没有办法将此操作矢量化?

  • 问题内容: 如果我有一个,如何通过使用Java 8的功能将其转换为以相同的迭代顺序包含所有对象的? 问题答案: 你可以用于将内部列表(将它们转换为Streams之后)展平为单个Stream,然后将结果收集到列表中:

  • 问题内容: 伙计们 我正在尝试找到问题的最优雅解决方案,并且想知道python是否为我想做的事情内置了任何东西。 我正在做的是这个。我有一个列表,并且我有一个接受项目并返回列表的函数。我可以使用列表推导来转换所有内容,例如: 但这返回一个列表列表; 我真正想要的是获取扁平化的列表; 现在,其他语言也有它。传统上用函数式编程语言来称呼它,而.Net称它为。python有类似的东西吗?有没有一种巧妙的

  • 问题内容: 我想从Python中的常量列表创建lambda对象列表;例如: 但是,当我运行它们时,这将创建一个lambda对象列表: 我希望它会打印 而是打印: 似乎所有lambda都被赋予了错误的参数。我做错了什么,有办法解决吗?我认为我使用的是Python 2.4。 编辑:更多尝试的事情,例如这样: 打印从1到25的期望平方,然后使用之前的print语句: 仍然给了我全部。现有的lambda对

  • 问题内容: 我想深入克隆一个列表。为此,我们有一种方法 所以现在要克隆我的列表,我应该先将其转换为可序列化的。是否可以将列表转换为可序列化列表? 问题答案: 已实施的所有标准实施。 因此,即使它本身不是的子类型,也可以安全地将列表强制转换为,只要您知道它是诸如或的标准实现之一。 如果不确定,请先复制列表(使用),然后知道它是可序列化的。