wake-up-neo.net

Sortieren Sie Daten aus einer MutableList in Kotlin

Ich bin neu bei Kotlin und muss einige Fragen zur Bestellung eines MutableList<MyObject> stellen. Nach meinem Verständnis kann ich einen myMutableList.sortBy {it.int} und einen myMutableList.sortByDescending {it.int} für Int und String ausführen. Return ist jedoch immer eine Unit und keine MutableList

Wo gehe ich falsch vor und wie gehe ich vor?

5
VTR2015

Veränderlich bedeutet änderbar. Daher ist es sinnvoll, dass sortBy keine neue Liste zurückgibt, sondern die Reihenfolge der Elemente in der aktuellen Liste geändert wurde.

Schauen Sie sich die Reihenfolge der Elemente in myMutableList nach der sortBy an, und Sie sehen, dass sie sich jetzt in der gewünschten Reihenfolge befinden.

9
weston

Die Kotlin-Funktionen sort , sortBy usw. sortieren die Elemente in der Liste selbst. Aus der Dokumentation von sort :

Sortiert das Array an Ort und Stelle nach der natürlichen Reihenfolge seiner Elemente.

Wenn Sie die Elemente nicht an Ort und Stelle sortieren möchten, sondern eine sortierte Liste zurückgeben möchten (Ihre Basis muss keine MutableList sein), können Sie sorted , sortedBy etc verwenden:

Gibt eine Liste aller Elemente zurück, die nach ihrer natürlichen Sortierreihenfolge sortiert sind.

3
msrd0

Um eine veränderliche Liste zu sortieren, können Sie Folgendes verwenden:

Collections.sort(myMutableList)
Collections.reverse(myMutableList)  //To sort the list by descending order

Und in Kotlin können Sie die Contract-Kotlin-stdlib-Anweisung verwenden, und es wird zu:

myMutableList.sort()
myMutableList.reverse()  //To sort the list by descending order

Und dann können Sie myMutableList aufrufen und die Reihenfolge wird wie folgt geändert:

val myMutableList = mutableListOf(8,5,4,6)

System.out.println("myMutableList: ${myMutableList[0]}")

myMutableList.sort()

System.out.println("myMutableList: ${myMutableList[0]}")

Ausgabe:

myMutableList: 8
myMutableList: 4
0
Luca Murra