Java Arraylist nach einem wert der Objekte ordnen?

... komplette Frage anzeigen

3 Antworten

Dies ist möglich, indem du das Comparable-Interface implementierst und in die compareTo(...)-Methode hineinschreibst, nach was verglichen werden soll.

Anschließend rufst du einfach die statische sort(...)-Methode der Klasse Collection auf.

Näheres dazu findest du hier: 
http://stackoverflow.com/questions/18441846/how-to-sort-an-arraylist-in-java

Ich hoffe, ich konnte dir helfen; wenn du noch Fragen hast, kommentiere einfach.

LG Willibergi

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von HonkKlonk
17.07.2016, 16:41

Ich habe ja keine Arraylist mit Zahlen, sondern mit einer Klasse, die eine Zahl enthält. außerdem kann ja eine Zahl mehrmals auftreten. Könntest du mal ein Codebeispiel bringen?

0

Du hast zwei Optionen:

Option 1: Deine Klasse Test2 implementiert Comparable, wodurch du gezwungen bist, die Methode: public int compareTo(Test2 o) zu implementieren.

Mögliche Rückgabewerte sind -1, 0 und 1 was für kleiner, gleich und größer steht.  Der Parameter Test2 o hierbei dabei das Vergleichsobjekt mit dem Verglichen wird. 

Ist das der Fall, kannst du via Collections.sort(); die Liste sortieren lassen.

Option 2: Du möchtest Comparable nicht implementieren, also kannst du stattdessen das Interface Comparator verwenden, der letztendlich dasselbe macht, jedoch nicht in der Zielklasse implementiert werden muss, aber letztendlich dasselbe bewirkt:

Collections.sort(list, new Comparator() {

    @Override
    public int compare(Test2 o1, Test2 o2) {
        ...
    }
});
Antwort bewerten Vielen Dank für Deine Bewertung

Da es Zahlen sind, kannst du einfach Arrays.Sort(array) benutzen

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von HonkKlonk
17.07.2016, 16:07

könntest du ein Codebeispiel dazu geben?

0
Kommentar von Willibergi
17.07.2016, 16:55

Das wird nicht funktionieren.

Auch wenn es so scheint - in der ArrayList sind Klasseninstanzen, keine Zahlen (s. Generics der ArrayList). Die Zahlen sind als Instanzvariablen in der Klasse Test2 vorhanden, daher muss zuerst die Zahl aus der Klasse abgerufen werden.

LG Willibergi

0

Was möchtest Du wissen?