Kotlin Flow сортировка
Есть ли способ отсортировать коллекцию, созданную потоком, в произвольном порядке, например:
fun getList():Flow<Something>
fun main(){
launch{
getList().filter{}.map{}.sortBy{
//
}.toList()
}
}
2 ответа
Решение
Вы можете toList()
сначала а потом sortBy()
. Сортировка потока не всегда имеет смысл, потому что поток, по определению, не знает, будут ли в потоке еще какие-то элементы.
Вы можете применить некоторые действия, подобные этому:
getList().transform {
//it - list
// sortedList - some function to perform sorting or something else
emit(sortedList(it))
}
UPD: Вы можете использовать функции map (похожие на «transform», но более простые) и filter(используется для выдачи только определенных значений потока), а также для выполнения некоторых действий. Функция «преобразования» позволяет выполнять более конкретные действия. В таком случае они одинаковы.
getList().map {
sortedList(it)
}