Java 使用ArrayList时出现逻辑错误<;ArrayList<;整数>&燃气轮机;收集框架
我正在学习使用java中的集合。我制作了一个简单的程序,其中我希望输出为:Java 使用ArrayList时出现逻辑错误<;ArrayList<;整数>&燃气轮机;收集框架,java,arraylist,Java,Arraylist,我正在学习使用java中的集合。我制作了一个简单的程序,其中我希望输出为: [1, 2, 3] [[1, 2, 3]] [5, 6, 7] [[1, 2, 3], [5, 6, 7]] 我没有得到上述输出,而是得到以下输出: [1, 2, 3] [[1, 2, 3]] [5, 6, 7] [[5, 6, 7], [5, 6, 7]] i、 e每次我再添加一个ArrayList时,都会添加新的ArrayList,但以前的ArrayList也会被新的ArrayList替换。我不想让它被替换。谁能
[1, 2, 3]
[[1, 2, 3]]
[5, 6, 7]
[[1, 2, 3], [5, 6, 7]]
我没有得到上述输出,而是得到以下输出:
[1, 2, 3]
[[1, 2, 3]]
[5, 6, 7]
[[5, 6, 7], [5, 6, 7]]
i、 e每次我再添加一个ArrayList时,都会添加新的ArrayList,但以前的ArrayList也会被新的ArrayList替换。我不想让它被替换。谁能解释一下这里发生了什么事?我的代码是:
import java.util.*;
class Amit{
public static void main(String args[])
{
ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> b = new ArrayList<Integer>();
b.add(1);
b.add(2);
b.add(3);
System.out.println(b);
a.add(b);
System.out.println(a);
b.clear();
b.add(5);
b.add(6);
b.add(7);
System.out.println(b);
a.add(b);
System.out.println(a);
}
}
import java.util.*;
阿米特类{
公共静态void main(字符串参数[])
{
ArrayList a=新的ArrayList();
ArrayList b=新的ArrayList();
b、 增加(1);
b、 增加(2);
b、 增加(3);
系统输出打印ln(b);
a、 添加(b);
系统输出打印项次(a);
b、 清除();
b、 增加(5);
b、 增加(6);
b、 增加(7);
系统输出打印ln(b);
a、 添加(b);
系统输出打印项次(a);
}
}
a
引用了列表b
。这是一个参考,而不是一个副本。因此,如果清除b
,则a
中的所有值都将清空。然后添加5,6,7并再次添加id
ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> b = new ArrayList<Integer>();
b.add(1);
b.add(2);
b.add(3);
System.out.println(b);
a.add(b); // a= [[1,2,3]]
System.out.println(a);
b.clear(); // a = [[]]
b.add(5); //a = [[5]]
b.add(6); // a=[[5,6]]
b.add(7); // a=[[5,6,7]]
System.out.println(b);
a.add(b); //a=[[5,6,7],[5,6,7]]
System.out.println(a);
ArrayList a=新的ArrayList();
ArrayList b=新的ArrayList();
b、 增加(1);
b、 增加(2);
b、 增加(3);
系统输出打印ln(b);
a、 加(b);//a=[[1,2,3]]
系统输出打印项次(a);
b、 清除();//a=[]]
b、 增加(5)//a=[[5]]
b、 加(6);//a=[[5,6]]
b、 加(7);//a=[[5,6,7]]
系统输出打印ln(b);
a、 添加(b)//a=[[5,6,7],[5,6,7]]
系统输出打印项次(a);
}当b是一个对象时,您将其视为一个基本类型。当你把b变成[5,6,7]时,它在两个地方都变成了[5,6,7],因为它是同一个物体。@宪兵谢谢你。