Java 将ArrayList的项添加到ArrayList的其他ArrayList
我在列表Java 将ArrayList的项添加到ArrayList的其他ArrayList,java,arraylist,Java,Arraylist,我在列表a中添加了一个项目,然后在列表b中添加了列表a,并再次执行了相同的操作 我的问题是,如果我打印b.get(0)和b.get(1),我会得到相同的列表,这两个项目都是“一”和“二”,为什么会这样 在b.get(0)中,我只想获取我添加的一项,即a.add(“一”) 添加a.add(“两个”)后,如果我打印b.get(1)我应该同时获得“一个”和“两个” 是否有任何解决方案或更改来管理此问题 List<String> a= new ArrayList<String>(
a
中添加了一个项目,然后在列表b
中添加了列表a
,并再次执行了相同的操作
我的问题是,如果我打印b.get(0)
和b.get(1)
,我会得到相同的列表,这两个项目都是“一”
和“二”
,为什么会这样
在b.get(0)
中,我只想获取我添加的一项,即a.add(“一”)
添加a.add(“两个”)
后,如果我打印b.get(1)
我应该同时获得“一个”
和“两个”
是否有任何解决方案或更改来管理此问题
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));
您将添加两次相同的列表,因此您将看到外部列表的两个索引的相同元素 要添加两个不同的
列表
,必须先创建一个新的数组列表
,然后再将每个元素添加到外部列表
:
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);
a.添加(“一”);
b、 添加(a);
a=新阵列列表(a);//假设您希望第二个列表同时包含“一”和“二”
a、 添加(“两”);
b、 添加(a);
您将添加两次相同的列表,因此您将看到外部列表的两个索引的相同元素
要添加两个不同的列表
,必须先创建一个新的数组列表
,然后再将每个元素添加到外部列表
:
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);
a.添加(“一”);
b、 添加(a);
a=新阵列列表(a);//假设您希望第二个列表同时包含“一”和“二”
a、 添加(“两”);
b、 添加(a);
您正在b[0]和b[1]中添加相同的引用。如果您想在列表b的不同索引处有不同的列表,您必须创建一个新的列表对象
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));
List a=new ArrayList();
列表c=新的ArrayList();
列表b=新的ArrayList();
a、 添加(“一”);
b、 添加(a);
c=新的ArrayList();
c、 阿道尔(a);
c、 添加(“两”);
b、 添加(c);
System.out.println(“b=“+b.get(0));
System.out.println(“b=“+b.get(1));
您正在b[0]和b[1]中添加相同的引用。如果您想在列表b的不同索引处有不同的列表,您必须创建一个新的列表对象
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));
List a=new ArrayList();
列表c=新的ArrayList();
列表b=新的ArrayList();
a、 添加(“一”);
b、 添加(a);
c=新的ArrayList();
c、 阿道尔(a);
c、 添加(“两”);
b、 添加(c);
System.out.println(“b=“+b.get(0));
System.out.println(“b=“+b.get(1));
原因在于您的代码中,b.get(0)和b.get(1)指向相同的列表a,因此输出是相同的
使用此代码可以实现您想要的,
列表a1=新的ArrayList();
列表a2=新的ArrayList();
列表>b=新阵列列表>()
产出是,,
b=[一]
100
b=[Two]原因在于您的代码中,b.get(0)和b.get(1)指向相同的列表a,因此输出是相同的 使用此代码可以实现您想要的, 列表a1=新的ArrayList(); 列表a2=新的ArrayList(); 列表>b=新阵列列表>() 产出是,, b=[一] 100
b=[Two]您仍在处理
ArrayList
的同一实例,因此索引1和索引2处的列表b
引用了您仍在处理ArrayList
的同一实例的,因此,索引1和索引2处的列表b
引用了ArrayList