List<list<Integer>> l1=new ArrayList<>();为什么不对
时间: 2024-09-15 14:08:48 浏览: 72
List<Bean>转换为List<Map>
在 Java 中,`List<List<Integer>> l1 = new ArrayList<>();` 这行代码实际上是一个语法错误,原因在于列表嵌套的初始化不正确。这里有两个问题:
1. **类型不匹配**:`List<List<Integer>>` 表示一个列表,其元素是另一个列表,每个内部列表包含 Integer 类型的对象。但是,你试图直接创建一个 `ArrayList` 对象,它只接受单一类型的元素,而不是另一个列表作为元素。
2. **缺少泛型指定**:当你创建一个 ArrayList 的实例时,需要明确指定列表内元素的具体类型。正确的写法应该是指定内部列表的元素类型:
```java
List<List<Integer>> l1 = new ArrayList<ArrayList<Integer>>();
```
或者省略具体的实现类,如果使用泛型自动推断:
```java
List<List<Integer>> l1 = new ArrayList<>();
l1.add(new ArrayList<Integer>()); // 添加时指定元素类型
```
在这个例子中,第一个初始化是不合适的,因为它期望的是一个能够容纳 Integer 列表的容器,而你提供的只是一个普通的 ArrayList,无法直接存储其他列表。
阅读全文