[英]Adding items of ArrayList to other ArrayList of ArrayList
我将一个项目添加到列表a
,然后将列表a
添加到列表b
,然后再次执行相同的操作。
我的问题是,如果我打印b.get(0)
和b.get(1)
,得到的列表都是"One"
和"Two"
,为什么会这样?
在b.get(0)
我只想添加一个项,即a.add("One")
。
添加a.add("Two")
,如果我打印b.get(1)
我应该同时获得"One"
和"Two"
吗?
是否有解决方案或任何更改来管理?
List<String> a= new ArrayList<String>();
List<List<String>> b= new ArrayList<List<String>>();
a.add("One");
b.add(a);
a.add("Two");
b.add(a);
System.out.println("b="+b.get(0));
System.out.println("b="+b.get(1));
输出:
b=[One, Two]
b=[One, Two]
您将两次添加相同的List,因此对于外部List的两个索引,您将看到相同的元素。
为了添加两个不同的List
,必须在将每个元素添加到外部List
之前创建一个新的ArrayList
:
a.add("One");
b.add(a);
a = new ArrayList<>(a); // assuming you want the second list to contain both "One" and "Two"
a.add("Two");
b.add(a);
您要在b [0]和b [1]中添加相同的引用。 如果要在列表b的不同索引处具有不同的列表,则必须创建一个新的List对象
List<String> a= new ArrayList<String>();
List<String> c= new ArrayList<String>();
List<List<String>> b= new ArrayList<List<String>>();
a.add("One");
b.add(a);
c= new ArrayList<String>();
c.addAll(a);
c.add("Two");
b.add(c);
System.out.println("b="+b.get(0));
System.out.println("b="+b.get(1));
原因是在您的代码中,b.get(0)和b.get(1)指向相同的列表a,因此输出相同。
使用此代码可以实现您想要的,List a1 = new ArrayList(); 列出a2 = new ArrayList(); List> b = new ArrayList>();
a1.add("One");
b.add(a1);
a2.add("Two");
b.add(a2);
System.out.println("b="+b.get(0));
System.out.println("b="+b.get(1));
输出是b = [一个] 100 b = [两个]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.