Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ArrayList时出现逻辑错误<;ArrayList<;整数>&燃气轮机;收集框架_Java_Arraylist - Fatal编程技术网

Java 使用ArrayList时出现逻辑错误<;ArrayList<;整数>&燃气轮机;收集框架

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替换。我不想让它被替换。谁能

我正在学习使用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替换。我不想让它被替换。谁能解释一下这里发生了什么事?我的代码是:

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],因为它是同一个物体。@宪兵谢谢你。