Сортировать объекты вложенного списка - PullRequest
1 голос
/ 06 апреля 2020

Я новичок в Kotlin, и у меня есть следующая задача. У меня есть список объектов (альбом), который содержит поля и список с другим объектом (песня). Мне нужно отсортировать списки альбомов и песен по их свойствам. Что я пробовал до сих пор

albumList.onEach { it.songs.sortedByDescending { song -> song.isFavorite} 
.sortedByDescending { it.createDate }

В результате список альбомов сортируется по свойству createDate, а список песен - нет. Я что-то упускаю? Спасибо

1 Ответ

1 голос
/ 07 апреля 2020

Я нашел какое-то "грязное" решение. Я не очень доволен этим, но это работает.

val newList: List<Album> = albumList
    // Sort albums
    .sortedWith(compareBy { it.createDate })
    // Sort songs inside each of albums
    .map { album ->
        album.apply {
            // Assign NEW list
            songs = album.songs.sortedWith(compareBy { it.isFavorite })
        }
    }

Как это работает:

1) Сортировка альбомов по дате создания createDate

2 ) Для каждого из альбомов:

  • получить все songs
  • сопоставить их с собой, но только с сортировкой songs (назначить отсортированный songs полю songs, поэтому это должно быть var, а не val)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...