Сортировка котлина Мутабильная карта строк - PullRequest
0 голосов
/ 03 мая 2019

Почему я не могу отсортировать изменяемую карту строки.Моя карта объявлена ​​следующим образом.

val schedule:  MutableMap<String, ArrayList<String>>

Она дает мне объект расписания следующим образом.

{1 = [1], 0 = [0], 3 = [3], 2 = [2], 5 = [5], 4 = [4, 14.07, 16.07, 01.08, 10.08], 6 = [6]}

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

{1 = [1], 0 = [0], 3 = [3], 2 = [2], 5 = [5], 4= [4, 1.08, 10.08, 14.07, 16.07], 6 = [6]}

Я могу получить доступ к нужному дню с помощью schedule.schedule["4"]?.sorted(), но это ничего не дает.Я устал преобразовывать строки в Ints, но все равно не повезло.

1 Ответ

0 голосов
/ 03 мая 2019

Используйте sort() вместо sorted().

  • sort() сортирует "на месте": он мутирует ArrayList
  • sorted() возвращает новый отсортированный ArrayList

Попробуйте: https://repl.it/repls/BitterRapidQuark

val map = mutableMapOf("4" to arrayListOf<String>("4", "14.07", "16.07", "01.08", "10.08"))
println("Original: " + map) // {4=[4, 14.07, 16.07, 01.08, 10.08]}

map["4"]?.sorted()
println("Not mutated: " + map) // {4=[4, 14.07, 16.07, 01.08, 10.08]}

map["4"]?.sort()
println("Mutated: " + map) // {4=[01.08, 10.08, 14.07, 16.07, 4]}
...