Hallo, ich poste vorab mal Code ohne den man nicht versteht was ich meine. Nicht abschrecken lassen, sieht länger und böser aus als er ist 
Dies sind 3 FUnktionen. eine bildet eine deep copy einer arraylist, eine bildet eine deep copy einer arraylist aus arraylisten, und die extremste bildet eine deep copy einer arraylist aus arraylists aus arraylists.
im prinzip sind die funktionen ja ziemlich gleich.
Ich stelle mir das wie eine zwiebel vor:
im innersten ist eine arraylist mit long elementen.
dann geht man hin und macht einer äussere shcicht drum herum, ein arraylist<...> kommt aussen drum.
dann noch eine shcicht und noch eine.
dieses "eine äussere shcicht hinzufügen" ist praktisch identisch, sieht man ja auch im code wo von der einen zur anderen funktion überall nur ein arraylist<...> mehr aussendrum ist.
darum kam in mir gerade so die frage auf ob man nicht irgendwie eine generische funktion schreiben kann bei der bspw. der Parameter G für eine beliebig geschachtelte Arraylist<Arraylist<Arraylist<.........Arraylist<Long>.....>>> steht und die Funktion eben dann so die Signatur
static Arraylist<G> copy(ArrayList<G>) hat und entsprechend auch innendrin aufgebaut ist.
weil aktuell muss ich ja für jede anzahl an äusseren schichten eine eigene, wenngleich auch fast identische funktion schreiben.
und wenn ich hier sowas wie eine generische funktion bauen könnte, nicht unähnlich dem prinzip der rekursion, dann wäre das echt nice
Geht sowas in java?
Ich hatte mal irgendwann von generischen klasen und so gelesen aber mir das nicht so wirklich gemerkt. daher dachte ich, gibts so das pprinzip vielleicht auch für funktionen
Java:
public static ArrayList<ArrayList<ArrayList<Long>>> copy3 (ArrayList<ArrayList<ArrayList<Long>>> Array){
//Sei Array das alte arraylistgebilde
ArrayList<ArrayList<ArrayList<Long>>> copy = new ArrayList<ArrayList<ArrayList<Long>>>();
for (ArrayList<ArrayList<Long>> Arrayi : Array) {
ArrayList<ArrayList<Long>> copyi = copy2(Arrayi);
copy.add(copyi);
}
//copy hat nun die selben inhalte wie array und das ohne referenzen
return copy;
}
public static ArrayList<ArrayList<Long>> copy2 (ArrayList<ArrayList<Long>> Array){
//Sei Array das alte arraylistgebilde
ArrayList<ArrayList<Long>> copy = new ArrayList<ArrayList<Long>>();
for (ArrayList<Long> Arrayi : Array) {
ArrayList<Long> copyi = copy1(Arrayi);
copy.add(copyi);
}
//copy hat nun die selben inhalte wie array und das ohne referenzen
return copy;
}
public static ArrayList<Long> copy1 (ArrayList<Long> Array){
//Sei Array das alte arraylistgebilde
ArrayList<Long> copy = new ArrayList<Long>();
for (long Arrayi : Array) {
Long a=new Long(Arrayi);
copy.add(a);
}
//copy hat nun die selben inhalte wie array und das ohne referenzen
return copy;
}
Dies sind 3 FUnktionen. eine bildet eine deep copy einer arraylist, eine bildet eine deep copy einer arraylist aus arraylisten, und die extremste bildet eine deep copy einer arraylist aus arraylists aus arraylists.
im prinzip sind die funktionen ja ziemlich gleich.
Ich stelle mir das wie eine zwiebel vor:
im innersten ist eine arraylist mit long elementen.
dann geht man hin und macht einer äussere shcicht drum herum, ein arraylist<...> kommt aussen drum.
dann noch eine shcicht und noch eine.
dieses "eine äussere shcicht hinzufügen" ist praktisch identisch, sieht man ja auch im code wo von der einen zur anderen funktion überall nur ein arraylist<...> mehr aussendrum ist.
darum kam in mir gerade so die frage auf ob man nicht irgendwie eine generische funktion schreiben kann bei der bspw. der Parameter G für eine beliebig geschachtelte Arraylist<Arraylist<Arraylist<.........Arraylist<Long>.....>>> steht und die Funktion eben dann so die Signatur
static Arraylist<G> copy(ArrayList<G>) hat und entsprechend auch innendrin aufgebaut ist.
weil aktuell muss ich ja für jede anzahl an äusseren schichten eine eigene, wenngleich auch fast identische funktion schreiben.
und wenn ich hier sowas wie eine generische funktion bauen könnte, nicht unähnlich dem prinzip der rekursion, dann wäre das echt nice
Geht sowas in java?
Ich hatte mal irgendwann von generischen klasen und so gelesen aber mir das nicht so wirklich gemerkt. daher dachte ich, gibts so das pprinzip vielleicht auch für funktionen