所以我基本上将一些Integer
个对象放在ArrayList x
中,然后将一些放在ArrayList y
中,然后放入y.addAll(x)
,但它似乎只添加了第一个一个,剩下所有的休息!是不是应该添加ALL?我查看了Oracle,他们展示了似乎是完全相同的例子但我的工作不正常。这是我的代码:
ArrayList<Integer> x = new ArrayList<Integer>();
Integer a = 1;
Integer b = 2;
Integer c = 3;
x.add(a);
x.add(b);
ArrayList< Integer> y = new ArrayList< Integer>();
y.addAll(x);
但y
似乎只有1
,但却遗漏了2
和3
。
我做错了什么?
编辑: 是的,对不起,我知道我实际上并没有将c添加到x,但即使我这样做,然后打印y,我仍然得到[1]而不是[1,2,3]。这是我不明白的。
import java.util.ArrayList;
public class SumArrayList {
public static void main(String[] args) {
ArrayList<Integer> x = new ArrayList<Integer>();
Integer a = 1;
Integer b = 2;
Integer c = 3;
x.add(a);
x.add(b);
System.out.println(x);
//System.out.println(calculateSumArrayListHelper(x));
ArrayList<Integer> y = new ArrayList<Integer>();
y.addAll(x);
System.out.println(y);
//System.out.println(calculateSumArrayListHelper(y));
}
}
这是我看到的照片: http://postimg.org/image/ms0y68nnh/
答案 0 :(得分:2)
在执行y.addAll(x);
之后的代码中,y将只包含2个元素[1,2]
。您永远不会将c
添加到x
:
ArrayList<Integer> x = new ArrayList<>();
Integer a = 1;
Integer b = 2;
Integer c = 3;
x.add(a);
x.add(b);
x.add(c); // add c to x
ArrayList< Integer> y = new ArrayList<>();
y.addAll(x);
System.out.println("size = " + y.size());
将产生:
size = 3
y将包含:
[1,2,3]
您在方法x
中从calculateSumArrayListHelper()
删除了项。这就是为什么你没有预期的结果。
评论所有对此方法的调用并检查y
的内容......应该是正确的。
答案 1 :(得分:2)
根据您发布的图片,很清楚。您在calculateSumArrayListHelper(x)
之前致电addAll()
。在该方法中,您可以从给定列表中删除元素。因此,当您致电y.addAll(x)
时,已从x
删除了元素。
答案 2 :(得分:0)
将sop放在最后一行。
System.out.println(y);
这样你就可以在我的系统中看到结果。[1,2]。 你没有得到3,因为你从未在X中添加它。
x.add(a);
x.add(b);
x.add(c);