List<List<String>> t = new ArrayList<>(); List<String> a = new ArrayList<>(); for(int i=0;i<l.length;i++){ a.add(l[i]); } t.add(a); a.clear();输入后值为空的原因
时间: 2024-01-31 16:02:58 浏览: 52
在这段代码中,首先创建了一个`List<List<String>>`类型的列表`t`,然后创建了一个`List<String>`类型的列表`a`。
接着,通过一个for循环向列表`a`中添加了`l`数组中的元素。然后,将列表`a`添加到列表`t`中,并调用`a.clear()`方法清空了列表`a`。
这段代码在往`t`列表中添加`a`列表时,实际上是将`a`列表的引用添加到了`t`列表中。也就是说,当执行`a.clear()`方法后,列表`a`中的元素被清空了,但是`t`列表中的引用并没有改变,它仍然指向原来的`a`列表,所以`t`列表中的元素也被清空了。
因此,当你在代码的后续部分访问`t`列表时,它的值为空。要避免这种情况,可以在每次循环中创建一个新的`List<String>`类型的列表,并将其添加到`t`列表中。具体代码如下:
```
List<List<String>> t = new ArrayList<>();
for(int i=0;i<l.length;i++){
List<String> a = new ArrayList<>();
a.add(l[i]);
t.add(a);
}
```
这样,每次循环都会创建一个新的`List<String>`类型的列表,并将其添加到`t`列表中,避免了上述问题。
相关问题
List<ArrayList<String>> monitorIds=new ArrayList<>();
这段Java代码创建了一个名为`monitorIds`的变量,它是一个`List<ArrayList<String>>`类型。这意味着`monitorIds`是一个列表,列表中的元素是另一个列表,即每个元素都是一个包含字符串的ArrayList。
简单来说,这个`monitorIds`可以存储一系列的ArrayList,每个ArrayList里都是一些字符串。例如,你可以这样添加元素到这个列表中:
```java
ArrayList<String> ids = new ArrayList<>();
ids.add("id1");
ids.add("id2");
monitorIds.add(ids); // 现在monitorIds包含了包含"id1"和"id2"的ids ArrayList
```
如果你需要获取、遍历或者操作其中的数据,可以像操作普通列表那样处理:
```java
for (ArrayList<String> subList : monitorIds) {
for (String id : subList) {
System.out.println(id);
}
}
```
List<String>arrayList = new ArrayList< String>();
List<String>arrayList = new ArrayList< String>();是一个创建ArrayList对象的语句,其中List<String>表示这是一个泛型类型,只能存储字符串类型的数据。ArrayList是List接口的一个实现类,可以用来创建一个可变长度的数组。下面是一个例子:
```java
List<String> arrayList = new ArrayList<String>();
arrayList.add("apple");
arrayList.add("banana");
arrayList.add("orange");
System.out.println(arrayList); // 输出:[apple, banana, orange]
```
阅读全文