我是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保持不变。
请用简单的词语解释原因......
答案 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)