Kotlin排序字符串的可变映射

时间:2019-05-03 15:18:00

标签: kotlin mutablemap

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

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()访问所需的日期 但这什么也没做。我很累将Strings转换为Ints,但仍然没有运气。

1 个答案:

答案 0 :(得分:0)

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