从java中的ArrayList中删除

时间:2014-11-17 19:20:42

标签: java arraylist

我是java的初学者,但经过艰苦的努力,我无法理解以下原因

我有两个ArrayLists赞..

import java.util.ArrayList;

      public class ArrayListManipulation
     {

    ArrayList<String> listOne = new ArrayList<>();

    ArrayList<ArrayList<String>> listTwo = new ArrayList<>();

    void add()
    {

        listOne .add("First");

        listOne .add("Second");

        listTwo.add(listOne);

    }

    void remove()
    {
        listTwo.remove(0);


     }
  }

我的问题是,当我从ListOne中的索引零中删除对象时,ListTWo也发生了变化,但是

当我从ListTwo中的索引零中删除元素时,ListOne保持不变。

请用简单的词语解释原因......

2 个答案:

答案 0 :(得分:1)

声明listTwo.remove(0);实际上会将listOne删除为listTwo的元素,但不会以任何方式更改listTwo(即删除其元素),因为您是引用 listTwo

如果您要删除所有元素,可以添加listOne.clear()

例如,清除&#34;嵌套&#34;中的所有内容List s,而不是引用索引:

listTwo.clear();
listOne.clear();

答案 1 :(得分:0)

listTwo是一个ArrayList,它包含一个ArrayList 引用列表。当您从listTwo中删除元素0时,只需将其引用删除到listOne,使listOne不受影响。

如果您想从listTwo访问和修改listOne,您必须执行以下操作:

listTwo.get(0).remove(1); // Retrieves listOne (at index 0), and removes its 2nd element (at index 1)