Also, wenn ich eine Arraylist A in einem Arraylist-Konstruktor einfügen ich ein neues Arraylist-Objekt B mit dem gleichen Satz von Objekten wie A. In meinem Fall habe ichArraylist Konstruktor Erstellen keine neuen Objektverweis
Arraylist<Arraylist<Integer>> powerSet
Arraylist<Arraylist<Integer>> OG
erstellt erwarten sowohl Powerset und OG scheinen die gleichen Bezugs zu teilen trotz OG von Powerset wie folgt aufgebaut ist:
ArrayList<ArrayList<Integer>> OG = new ArrayList<>(powerSet);
Hier wird der vollständige Code ist:
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);
}
}
Warum OG und Powerset haben die gleiche Referenz und wie mache ich OG ein neues Arraylist ohne haben Anteil alle Powerset der Elemente OG sein, die Powerset Referenz der