Was genau ist beim TreeSet im Gegensatz zu einer ArrayList eigentlich anders?
Container Klassen haben allgemein unterschiedle Performance, wenn es um das Einfügen von Elementen, vom Löschen von Elementen, oder dem Zugriff von Elemente geht. Wenn du viele Sachen einfügst dann wählt man eine Container-Klasse die das effizient macht. Will man schnelleres Löschen, dann eine andere zb. Und etc. Die Datenstruktur hinter den Operationen ist unterschiedlich. Über Iteratoren lässt sich die Datenstruktur iterieren und man kann ohne den Code zu verändern die Container-Klasse im Nachhein besser wechseln.
Es gibt verschiedene Typen von Container-Klassen. Set, Map, Stack, Queue, List. (Das sollten die abstrakten sein) Konkrete sind dann ArrayList, HashMap ...
Eine Set bedeutet eine Menge (auf Deutsch). Und nach der Mengenlehre, sind alle Elemente in dem Container gleichberechtigt. Die Reihenfolge der Elemente hat somit keine Bedeutung und es kann auch sein, dass man sie nicht in der Reihenfolge rausbekommt, wie man sie reingetan hat. Zudem können Elemente nicht doppelt drin sein. Zb "a", "b", "c", und nochmal "b" rein würde bedeuten er überschreibt den alten "b".
Die Liste ist dort ein wenig zugänglicher für die Meisten. Ich denke du arbeitest erstmal allgemein mit ArrayList. Da kannst du mehrere Elemente drin abspeichern die die selbe Reference haben. Sie ist sehr einfach zu bedienen. Und später guckst du wie du es optimierst mit Container-Klassen die besser geeignet sind.