Java ArrayList addAll只添加1个元素?

时间:2016-04-13 08:19:49

标签: java arraylist

所以我基本上将一些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,但却遗漏了23

我做错了什么?

编辑: 是的,对不起,我知道我实际上并没有将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/

3 个答案:

答案 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]

您在方法xcalculateSumArrayListHelper()删除了项。这就是为什么你没有预期的结果。

评论所有对此方法的调用并检查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);