从复制列表中删除项目也会从原始列表中删除

时间:2015-03-12 13:52:08

标签: android

public static void printList(ArrayList<Col> list, String place)
{
    ArrayList<Col> list2 = list;
    int count=0;
    float r,g,b;
    while(!list2.isEmpty())
    {
        r = list2.get(count).getR();
        g = list2.get(count).getG();
        b = list2.get(count).getB();
        list2.remove(0);
        Log.i(place+": "+count + "", "R: "+r+"   G: "+g+"   B: "+b);
    }
}

这种方法是出于某种原因从原始列表中删除所有项目。 我想也许我复制列表的方式是错误的,但我找不到正确的方法。

3 个答案:

答案 0 :(得分:0)

在分配值之前使用以下代码:

ArrayList<Col> list2 = new ArrayList<Col> (); 

答案 1 :(得分:0)

使用

  

ArrayList list2 = new ArrayList(list);

INSTEAD OF

  

ArrayList list2 = list;

答案 2 :(得分:0)

由于ArrayList是一个对象:

ArrayList<Col> list2 = list;

是一份软拷贝。它只复制对同一ArrayList对象的引用。

在Java中,你可以像这样克隆一个对象:

ArrayList<Col> list2 = (ArrayList<Col>)list.clone();