Сортировка котлина Мутабильная карта строк
Почему я не могу отсортировать изменяемую карту строки. Моя карта объявлена следующим образом.
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]}