繁体   English   中英

将ArrayList的项目添加到ArrayList的其他ArrayList

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM