所以,当我插入一个ArrayList阿成一个ArrayList构造我期待着与同一组对象为A.在我的情况下创建了一个新的ArrayList对象B我有ArrayList的构造没有创造新的对象引用
Arraylist<Arraylist<Integer>> powerSet
Arraylist<Arraylist<Integer>> OG
无论幂和OG似乎共享相同的基准,尽管正在建造从幂这样OG:
ArrayList<ArrayList<Integer>> OG = new ArrayList<>(powerSet);
下面是完整的代码:
public static ArrayList<ArrayList<Integer>> generatePower (ArrayList<Integer> s){
ArrayList<ArrayList<Integer>> powerSet = new ArrayList<>();
generatePower(s,powerSet);
return powerSet;
}
public static void generatePower(ArrayList<Integer> s,ArrayList<ArrayList<Integer>> powerSet){
if(s.size()==0){
powerSet.add(s);
return;
}
else{
int temp = s.remove(0);
generatePower(s,powerSet);
ArrayList<ArrayList<Integer>> OG = new ArrayList<>(powerSet);
for(ArrayList<Integer> el: OG){
el.add(temp); //for some reason any changes I make to OG here is
//reflected in the powerSet
}
powerSet.addAll(OG);
}
}
为什么OG和Powerset的具有相同的参考,我如何做OG是包含所有幂的元素,而新的ArrayList已经OG份额幂的参考