Сортировать ключи Hashmap по значению даты - PullRequest
0 голосов
/ 26 апреля 2018

у меня есть:

var schedulesByMonth = HashMap<String, MutableList<Schedule>>()

Расписание имеет свойство startDate: Date.

Я начинаю с огромного списка Schedule объектов и сортирую их по хэш-карте по месяцам. Поэтому, если startDate для объекта Schedule - июнь 2018 года, он попадает в список для ключа June 2018.

Это все хорошо, но мне нужны ключи для выбора, отсортированные по месяцам:

schedulesByMonth.keys

если этот массив ["July 2018", "August 2018", "June 2018"] мне нужно, чтобы он был ["June 2018", "July 2018", "August 2018"].

Я знаю, что могу сделать отсортированную карту:

val sorted = schedulesByMonth.toSortedMap(compareBy<String> {

    }

Но это только сортировка ключей (String). Как я могу сделать it значением (MutableList<Schedule>), чтобы можно было сортировать по startDate одного из расписаний?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Вы можете отсортировать записи с помощью sortedWith, в качестве аргумента которого используется компаратор. Компараторы можно легко создать с помощью compareBy:

schedulesByMonth.entries.sortedWith(compareBy({ it.value[0].startDate })
0 голосов
/ 26 апреля 2018

Я думаю, что главная проблема здесь - неправильный ключевой класс. Просто замените строки на даты, и все будет намного проще.

...