kotlin - фильтр MutableList с добавлением других элементов в конец списка - PullRequest
0 голосов
/ 15 января 2020

На самом деле я хочу отсортировать свой список следующим образом: у меня есть mutableList, подобный этому

noteList = mutableListOf<NoteDataHolder>().apply {
        notes.forEach {
            add(NoteDataHolder(it))
        }
}

Воображаемый NoteDataHolder имеет Id, и я хочу отсортировать свой список по этому Id

Мой список выглядит так: [ {id=1}, {id=2}, {id=3}, {id=4} ]

, когда я фильтрую свой список следующим образом: noteList.filter { it.note?.bookId == 4 }

я получаю только [ {id=4} ]

наконец, Я хочу получить все предметы после item4, как это [ {id=4}, {id=1}, {id=2}, {id=3} ]

1 Ответ

3 голосов
/ 15 января 2020

Похоже, вам нужно что-то вроде этого:

fun reorderItems(input: List<NoteDataHolder>, predicate: (NoteDataHolder) -> Boolean): List<NoteDataHolder>{
    val matched = input.filter(predicate)
    val unmatched = input.filterNot(predicate)

    return matched + unmatched
}

Для использования:

noteList = reorderItems (noteList!!) {it.note?.bookId == 4}
...