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 10:02:58 浏览: 47
intent传递ArrayList<T>
在这段代码中,首先创建了一个`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`列表中,避免了上述问题。
阅读全文