Сортировка котлина Мутабильная карта строк

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

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]}

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

{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 ответ

Решение

Использование 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]}
Другие вопросы по тегам