2017-10-21 4 views
0

私はKotlinを初めて使い、MutableList<MyObject>の注文に関するいくつかの質問をする必要があります。私が理解するように、IntStringの両方についてmyMutableList.sortBy {it.int}myMutableList.sortByDescending {it.int}を実行できます。しかし、返品は常にUnitであり、MutableListではありません。KotlinのMutableListからデータを並べ替え

ここで私は間違っていると私はどのように進むのですか?

答えて

4

変更可能であることを意味しますので、sortByでは新しいリストが返されるのではなく、アイテムの順序が現在のリストの「インプレース」に変更されています。

の後にmyMutableListの項目の順序を見てみると、今すぐ注文されていることがわかります。

2

kotlin関数sortsortByなどはすべてリスト自体の項目を並べ替えます。 sortのドキュメントから:

要素の自然順序に従ってその場所を並べ替えます。

あなたはインプレースの要素を並べ替えるのではなく(あなたのベースがMutableListである必要はありません)ソートされたリストを返すようにしたくない場合は、sortedを使用することができ、sortedByなど:

自然な並べ替え順序に従ってソートされたすべての要素のリストを返します。

0

には、使用可能な可変リストをソートするに:

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

そしてkotlinにあなたが契約kotlinの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 
関連する問題