java - 无法理解如何在 java 中定义列表列表

标签 java list collections java-7 associative-array

<分区>

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

显示编译错误的那个

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<List<Integer>> arr2 = new ArrayList<ArrayList<Integer>>(); 出了什么问题|

最佳答案

你不需要这些:

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

完成。

需要了解的重要一点:您可以创建那些“内部”列表。您只需创建一个列表(类型为“列表列表”)。稍后,你会做:

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

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

部分原因是泛型实际上是使用类型删除实现的。这意味着:实际的列表实现对您在源代码中使用的泛型类型一无所知。它只处理 Object 的实例.从这个意义上说,实现不可能“知道”新列表应该包含 List<Whatever>。 .

关于java - 无法理解如何在 java 中定义列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45319323/

相关文章:

c++ - (C++) 如何将 STL 列表声明为外部列表?

c++ - 从 std::list 中移除具有特定值的元素

java - 如何将用户输入数据与我的 firestore 记录进行比较

Java Reactor StepVerifier.withVirtualTime 循环 : repeatedly check with "expectNoEvent()", "expectNext()"和 "thenAwait()"

java - 使用 Guice 和 "Law of Demeter"进行依赖注入(inject)

java - Stream reduce vs Stream.parallel.reduce()

javascript - Backbone : Create collection from JSON

java - 你如何在java中获取进程ID?

Java 列表问题

java - 包含对象的两个列表的并集