创建arraylists的arrayList

时间:2015-03-06 19:26:28

标签: java arraylist

我正在尝试创建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的值相同。

1 个答案:

答案 0 :(得分:1)

当您将名为ArrayList的{​​{1}}添加到名为temp的外部ArrayList时,msebi包含对msebi的引用,而不是temp复制。然后,您立即clear() temp并重新构建它。您对temp中的同一msebi列表有多个引用。

创建新的ArrayList而不是清除旧的{{1}}。这样,当添加一个列表时,它就不管用了,因为你将在另一个列表对象上运行。