2017-10-21 59 views
0

我是Kotlin的新手,需要询问一些关于订购MutableList<MyObject>的问题。据我所知,我可以为IntStringmyMutableList.sortBy {it.int}myMutableList.sortByDescending {it.int}。但返回始终是Unit而不是MutableList对Kotlin中MutableList中的数据进行排序

我在哪里出错了,我该如何继续?

回答

4

可变的意思是可变的,所以它有意义,而不是sortBy返回一个新的列表,项目的顺序已经在当前列表中“就地”改变。

尝试查看myMutableList中物品的订单,之后sortBy,你会看到他们现在按要求的顺序。

2

kotlin函数sort,sortBy等对列表本身的所有项目进行排序。从sort的文档:

根据元素的自然顺序对数组进行排序。

如果你不想就地元素进行排序,而是返回一个排序列表(您的基地并不需要是一个MutableList),你可以使用sortedsortedBy等:

返回根据其自然排序顺序排序的所有元素的列表。

0

要按一个可变的列表,你可以使用:

Collections.sort(myMutableList) 
Collections.reverse(myMutableList) //To sort the list by descending order 

而且在科特林可以使用合同科特林STDLIB指令,它变成:

myMutableList.sort() 
myMutableList.reverse() //To sort the list by descending order 

然后你就可以调用myMutableList它的订单发生了变化,如下所示:

val myMutableList = mutableListOf(8,5,4,6) 

System.out.println("myMutableList: ${myMutableList[0]}") 

myMutableList.sort() 

System.out.println("myMutableList: ${myMutableList[0]}") 

输出:

myMutableList: 8 
myMutableList: 4 
相关问题