21312
Goto Top

ArrayList sortieren

Hallo zusammen!
Meine Aufgabe ist es eine ArrayList zur sortieren (nach Namen).
Weiß jemand zufällig wie das einfach funktioniert?
Dazu noch eine Frage: Was ist ein Comparator?
Schon mal Danke!
MfG

Content-Key: 23117

Url: https://administrator.de/contentid/23117

Printed on: April 20, 2024 at 00:04 o'clock

Member: Rakeem2001
Rakeem2001 Jan 09, 2006 at 11:43:49 (UTC)
Goto Top
Servus,

also ein Comparator ist eine Vergleichsklasse, dieser übergibst du die zu vergleichenden Werte und legst intern fest, wie sie verglichen werden. Dieser wird deshalb benötigt, weil in einer ArrayList ja alle möglichen Datentypen gespeichert werden.

Diesen Comparator baust Du dann als Prüfwert in Deinen Sortieralgorithmus ein und dann sollte es eigentlich funzen.
Such also am besten nach einem Comparator, baue ihn auf String um und dann kann losgehen. ArrayList biete ja auch Sort Optionen, da bin ich mir aber nicht so sicher, soweit ich das noch weiß brauchst Du dafürt auch den Comparator, hier wird er dann aber einfach übergeben...

Schau doch mal hier: http://www.galileocomputing.de/openbook/javainsel3/javainsel_110000.htm ...

Hoffe es hilft!

Greetz René
Member: gabrielgn
gabrielgn Jan 18, 2006 at 15:12:46 (UTC)
Goto Top
Nur TreeMap ist ein Sorted Collection im Sinne von Smalltalk, es speichert beim Einfügen sortiert und erlaubt daher stets den sortierten Durchlauf ohne zusätzlichen Sortieraufwand.
Bei HashMap und Hashtable muss man ggf. alle Schlüssel oder Werte in ein Array oder ArrayList ausgeben und dieses sortieren, mit Arrays.sort bzw. Collections.sort.
Eine Alternative zu TreeMap sind noch Object und ArrayList. Diese alle kann man sortieren. In beiden kann man - Sortierung vorausgesetzt - mit Arrays.binarySearch bzw. Collections.binarySearch effizient suchen (Direkzugriff per Schlüssel). In ArrayList (List) kann man mit binarySearch auch relativ effizient sortiert einfügen.
Für Object steht binarySearch nur in einer Version zur Verfügung, die das gesamte Array absucht. Wenn man ein Array sukzessive mit binarySearch sortiert füllen will, muß der bisher unbenutzte Rest des Arrays daher geeignet gefüllt sein, mit Maximalwerten bzw. der Sortierordnung. Man gebe besser nach und verwende für den Zweck des sortierten Einfügens ArrayList oder TreeMap.