Arraylist の Arraylist を扱う問題に直面しています。コードで Arraylist al をクリアすると、ans 変数も変更されます。私はそれが参照によって保存されていることを知っています。この問題を解決する方法はありますか? 私のコードは以下のとおりです。
public ArrayList<ArrayList<Integer>> levelOrder(TreeNode root) {
ArrayList<ArrayList<Integer>> ans = new ArrayList();
ArrayList<Integer> al = new ArrayList();
Queue<TreeNode> myQ = new LinkedList();
if(root == null)
return ans;
myQ.add(root);
myQ.add(null);
TreeNode temp;
while(!myQ.isEmpty()){
temp = myQ.remove();
if(temp == null){
ans.add(al);
System.out.println("al is: " + al);
System.out.println(" ans is: " + ans);
al.clear();
System.out.println(" ans is: " + ans);
if(myQ.isEmpty())
break;
myQ.add(null);
}
else{
al.add(temp.val);
if(temp.left != null)
myQ.add(temp.left);
if(temp.right != null)
myQ.add(temp.right);
}
}
//System.out.println(ans);
return ans;
}
ありがとう