2017-10-21 1170 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