Ich verwende sortedBy()
, um die Sortierung der Objektsammlung durchzuführen.Verwenden der Bedingung zum Auswählen der Sortiereigenschaft in Kotlin
Da die Reihenfolge auf der Benutzer je nach Wahl kann sich ändern, ich habe
mit dem folgenden Code am Endeval sortedList = if (sortingOrder == WordSortingOrder.BY_ALPHA) {
list.sortedBy { it.word.value }
} else {
list.sortedBy { it.createdAt }
}
Dann führe ich auf der sortierten Sammlung weitere Aktionen. Ich merke, dass sortedBy()
Methode erwartet, dass eine Eigenschaft zurückgegeben wird. Ich frage mich, ob es eine Möglichkeit gibt, die Sortierbedingung in eine Kette von Sammelmethoden einzubetten.
Für mich diesen Code zeigt einen Compiler-Fehler Ich denke, das passiert, weil 'it.word.value' und' it.createdAt' hat verschiedene Rückgabetypen. – Zzokk
Da die Eigenschaften unterschiedliche Typen haben, müssen die Rückgabewerte in 'Comparable 'umgewandelt werden, um Compilerfehler zu vermeiden. Mit dem Casting sieht es nicht mehr so gut aus, daher ist es wahrscheinlich eine bessere Lösung, den Code wie in der Frage zu haben. Es erlaubt auch leicht zwischen aufsteigender und absteigender Reihenfolge zu wechseln. –
Zzokk
Guter Punkt @ Zzokk. Das habe ich vorher nicht bedacht. Ich habe ein weiteres Beispiel hinzugefügt, das 'run' verwendet. Sie können im Grunde jede Gruppe von Operationen in einen "let" - oder "run" -Block einschließen und danach weiter verketten. – mfulton26