sunny: Verkettete Listen "dynamisch" verschachteln

Beitrag lesen

Hallo!

Erstmal wünsch ich euch allen ein gute neues Jahr! :-)

Zu meinem Problem: Bin Java-Anfänger und stehe gerade vor einem Problem, bin nicht ganz sicher, ob ich überhaupt richtig begonnen habe.

Es geht darum, dass (einfach) verkettete Listen erstellt werden sollen. In meinem Fall heißt die erste Liste "Bags". Dieser Liste werden dann Objekte "zugefügt", die wieder Listen enthalten. In meinem Fall heißen diese dann zB immer "BagWithPresents" (da hier "Geschenke eingepackt" werden sollen).

Jetzt habe ich das Ganze zuerst einmal irgendwie testen wollen (ob das mit den Listen überhaupt funktioniert) und hab das so gemacht:

  
 BagList Bags = new BagList();  
  
 Bag BagWithPresents1 = new Bag(capacityOfBags);  
 Bag BagWithPresents2 = new Bag(capacityOfBags);  
  
 Bags.add(BagWithPresents1);  
 Bags.add(BagWithPresents2);  
  
 BagWithPresents1.add(new Present(10));  
 BagWithPresents2.add(new Present(10));  
 BagWithPresents2.add(new Present(20));  
 BagWithPresents2.add(new Present(30));  
 BagWithPresents1.add(new Present(50));  

Das scheint soweit auch zu funktioneren wenn ich mir die "Ergebnisse" auf der Konsole ausgeben lasse (habe für Testzwecke eine print-Methode der beiden Listen erstellt). Allerdings hab ich keine Idee, wie ich das Ganze "dynamisch" machen könnte. Denn eigentlich weiß ich nicht, wieviele Bags ich brauchen werde, und natürlich auch nicht, wieviele Objekte der zweiten Liste (BagWithPresents) dann zugefügt werden. Wie kann man so etwas lösen? Eigentlich geht es darum, dass hier dann ein best-fit-Algorithmus erstellt werden soll (die "BagWithPresents" haben nur eine begrenzte Kapazität (jeder dieselbe) und die "Present"s unterschiedliche Gewichte) ...

Am Ende soll es also eine BagList-Liste "Bags" geben, die beliebig viele "BagWithPresents" enthält, und diese einzelnen "BagWithPresents" sollen dann beliebig viele "Present"s enthalten. Wieviele "Present"s das sind, kommt aus einer User-Eingabe, wieviele "Bags" benötigt werden kann ebenfalls erst zur Laufzeit (durch den Algorithmus für das Verteilen) festgelegt werden, das mit der Numerierung war also fürs Testen zwar noch irgendwie möglich, führt aber natürlich nicht zu einer Lösung. Wie kann ich so etwas "richtig" machen? Sodass die Objekte sozusagen "dynamisch" erstellt werden?

Liebe Grüße
sunny