我有一个实例变量
Queue<ArrayList<String>> path = new LinkedList<>();
在方法中我有这个
ArrayList<String> shortestPath = new ArrayList<String>();
HashSet<String> visited = new HashSet<String>();
Queue<String> q = new LinkedList<String>();
ArrayList<String> tempArrNew = null;
...
while{
ArrayList<ArrayList<String>> tempArr = new ArrayList<>();
for(ArrayList<String> a : path){
tempArr.add(a);
}
for{
q.add(o);
visited.add(o);
tempArrNew = tempArr.get(tempArr.size()-sub);
tempArrNew.add(o);
path.add(tempArrNew);
}
}
问题是,它添加到“tempArrNew.add(o)”行中的 path 变量,o是一个String。因此,例如,第二个for循环就是这样做......
path = [[banana]]
...
o =苹果
苹果被添加到q罚款中
苹果被添加到访问罚款
tempArrNew = [香蕉]工作正常
但是当我去添加apple到tempArrNew时,它将它添加到tempArrNew(使它[banana,apple])很好但是由于某种原因它也将它添加到路径中的arrayList,即使我甚至没有调用它在那一行,使路径= [[香蕉,苹果]]。那么当我将tempArrNew添加到路径时,路径变为[[香蕉,苹果],[香蕉,苹果]],当我希望它是[[香蕉],[香蕉,苹果]]时。
我不知道发生了什么,所以非常感谢任何帮助!