Kotlin 排序字符串的可变映射

Kotlin sorting Mutable map of strings

为什么我不能对字符串的可变映射进行排序。我的地图声明如下。

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() 访问所需的日期 但这没有做任何事情。我厌倦了将字符串转换为整数,但仍然没有成功。

使用 sort() 而不是 sorted()

  • sort() 排序 "in place":它改变了 ArrayList
  • sorted() returns 新排序 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]}