Habe ein kleines Problem mit dem abfüllen einer verschachtelten ArrayList...
Ich möchte eigentlich nur die verschachtelte ArrayList "submenupunktListe_de_komplett" mit Daten aus der ArrayList "submenupunktListe_de" abfüllen.
ArrayList<String> submenupunktListe_de = new ArrayList<>();
ArrayList<ArrayList<String>> submenupunktListe_de_komplett = newArrayList<ArrayList<String>>();
Der Ablauf ist folgendermassen:
1) Aus einer Datei werden Werte ausgelesen und mit "add" der ArrayList "submenupunktListe_de" hinzugefügt
2) Sobald alle Werte ausgelesen wurden, so wird die ArrayList "submenupunktListe_de" mit "add" der verschachtelten ArrayList "submenupunktListe_de_komplett" hinzugefügt
//bis hier klappt soweit alles wunderbar
3) Nun wird die ArrayList mit removeAll(submenupunktListe_de) gelöscht damit sie mit neuen Werten gefüllt werden kann.
//jetzt ist die verschachtelte Liste ebenfalls sofort leer weil die Referenz leer ist :bahnhof:
4) Nun möchte ich die nächste Datei einlesen und die neue ArrayList wieder in die verschachtelte ArrayList hinzufügen. Da jedoch wegen removeAll die verschachtelte Liste ebenfalls leer ist funktionierts nicht.
Hat jemand einen Tipp wie man ein solches Problem am besten angeht..?
Die komplette Menustruktur inklusive Untermenu's soll schlussendlich in der "submenupunktListe_de_komplett" abgebildet werden => jeweils eine Liste mit den Untermenu's pro Menupunkt. Die Menupunkt selber werden NICHT in "submenupunktListe_de_komplett" gespeichert.
Damit ich die einzelnen ArrayList's in "submenupunktListe_de_komplett" ablegen kann, verwende ich eine verschachtelte ArrayList.
Aber das Problem ist ja nun, dass ich nach auslesen der ersten Datei die ArrayList "submenupunktListe_de" nicht löschen darf weil sonst sofort auch die Einträge aus der verschachtelten ArrayList verschwinden.
Aber das Problem ist ja nun, dass ich nach auslesen der ersten Datei die ArrayList "submenupunktListe_de" nicht löschen darf weil sonst sofort auch die Einträge aus der verschachtelten ArrayList verschwinden.
Habe die Deklaration der ArrayList anstatt am Anfang des Programms wie von dir beschrieben in die entsprechende Schlaufe verschoben und nun funktionierts...
Die Frage nach dem Sinn des Löschens ist durchaus berechtigt.
Denn wenn es dir nur darum geht, den Speicherverbrauch 'klein' zu halten, dann kannst du auch einfach die ArrayList in eine Methode oder Schleife verpacken. Somit hat sie nur in diesem Abschnitt Gültigkeit und wird dann nach verlassen wieder gelöscht.
Mein Ansatz wäre:
Starte am Anfang eine Abfrage, wie viele Menüs du speichern musst. Für die Menge dieser Menüs erstellst du dir dynamisch (Schleife?) deine ArrayLists mit dem Upper-Bound String. Diese befüllst du wie gehabt (am besten auch wieder in einer Schleife) und wenn das geschehen ist, dann fügst du diese deiner Menüpunkte_Komplett ArrayListe aus ArrayListen hinzu.
So hälst du den Speicher relativ klein und hast durch die Schleifen nahezu keinen redundanten Code.