Aaaaaaalso
Eigentlich werden hier umständlich in C beliebte verkettet Listen in Java realisiert. Die brauch aber kein Mensch weils genug Klassen gibt, die man für sowas verwenden kann aber wie du schon sagtest, es is ja ein Beispiel und nicht von dir
So die erste Klasse "List" definiert soweit ich das verstanden hab ein Listenelement. Die int Variable "element" ist dabei der Wert des Elementes und das Attribut "next" ist ebenfalls vom gerade definierten Typ "List" und beinhaltet das nächste Element innerhalb der Liste.
2 versch. Konstruktoren machen Sinn wenn es die Möglichkeit gibt, sie mit versch. Parametern aufzurufen. Der Defaultkonstruktor initialisiert hier nur die Werte und setzt "next" auf null, wohingegen der andere Konstruktor bereits Werte in die privaten Variablen speichert. Der Compiler entscheidet immer anhand der übergebenen Parameter welcher Konstruktor aufgerufen wird.
3. Ist die Methode um dem aktuellen Listeninhaltsobjekt (Objekt der Klasse List) einen integer Wert zuzuweisen, der dann in "element" gespeichert wird.
4. richtig. Die Methode liefert den nächsten Listeneintrag zurück.
Die 2. Klasse deutet für mich eher auf ne Queue hin, denn mit der ersten lassen sich schon verkettete Listen realisieren oO naja.
5.6.7.8. die Methode bastelt dir aus dem übergebenen Array ne Liste
Wenn das Array Daten enthält wird der erste Wert dem "Tail" zugewiesen. Dabei wird der vorher definierte zweite Konstruktor der Klasse "List" benutzt. Es wird also ein neues Listenelement erzeugt, das den Wert an der Stelle 0 des Arrays bekommt.
Anschließend wird head tail zugewiesen, da es ja sein kann, dass das Array nur eine Integer Zahl beinhaltet, wodurch die Liste nur ein element besitzt, welches head und tail gleichzeitig ist.
Die jetzt eingeführte list variable ist nur innerhalb der Methode verfügbar.
Nun kommt eine Schleife, die die restlichen Inhalte des int-Arrays in Listenobjekte umwandeln. Zum Abschluss der Schleife wird jedesmal das aktuelle Listenobjekt der Variable "head" zugewiesen, um die Verkettung im nächsten Durchlauf der Schleife sicherstellen zu können "ln = new List (entries
, head);". Der 2. Parameter dieses Konstruktors war ja das nächste Element, welches in jedem Fall der Schleife das im vorherigen Durchlauf erzeugte Objekt ist (deshalb am Anfang auch head = tail, damit das neu erstellte Objekt auf das 1. zeigen kann). Dadurch wird die Verkettung innerhalb der Liste erreicht.
Zum Schluss wird "head" zurückgeliefert und man bekommt damit das Listenobjekt, das am Anfang steht und kann über die "next" Variablen auf die nächsten Elemente zugreifen.
9. jop könnt man auch anders machen. So wird halt sichergestellt, dass äußere Klassen nicht festelgen können mit welcher Liste die Ausgabe begonnen werden soll.Das kann nur innerhalb der private Methode die Klasse selbst definieren.
10. jap. Wenn getNext(), was auch in der List Klasse definiert ist, etwas enthält, also ungleich null ist, gehts los. getNext() greift nun einfach auf die private "next" Variable des Listenobjekts zu und liefert das nächste Objekt zurück, dessen Wert nun ausgegeben werden kann. Ohne zusätzliche Schleife wird hier jedoch nur immer das übergebene und das nächste Listenelement ausgegeben.
Ich hoff es war einigermaßen verständlich, wenn nicht, frag ruhig nach 