我正在尝试创建ArrayLits的ArrayList。然后,每当我将ArrayList添加到我的初始ArrayList时,我将初始ArrayList中的My 2nd ArrayList复制到初始ArrayList中的第一个ArrayList。这是我的代码。谢谢你的帮助。
ArrayList<ArrayList> msebi = new ArrayList<ArrayList>();
ArrayList<Pair> temp = new ArrayList<Pair>();
Stack<ArrayList> arrayListStack = new Stack<ArrayList>();
Pair pair = null;
for(int i=1;i<finalList.size()-1;i++){
pair = finalList.get(i);
if(finalList.get(i+1).getDepth() > finalList.get(i).getDepth()){
temp.add(pair);
if(i == finalList.size()-2){
temp.add(finalList.get(i+1));
msebi.add(temp);
}
else {
temp.add(pair);
msebi.add(temp);
temp.clear();
}
}
请注意,我创建了另一个名为Pair的类。这个Pair由String和depth组成,因此我们有getDepth();另外,我在主类ArrayList中有finalList = new ArrayList(); 因此,每当我尝试复制msebi ArrayList中的ArrayLists的内容时,我得到的第二个arraylist的值与第一个arraylist的值相同。
答案 0 :(得分:1)
当您将名为ArrayList
的{{1}}添加到名为temp
的外部ArrayList
时,msebi
包含对msebi
的引用,而不是temp
复制。然后,您立即clear()
temp
并重新构建它。您对temp
中的同一msebi
列表有多个引用。
创建新的ArrayList
而不是清除旧的{{1}}。这样,当添加一个列表时,它就不管用了,因为你将在另一个列表对象上运行。