亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 Kotlin sortBy() 似乎以相反的順序運行?

為什么 Kotlin sortBy() 似乎以相反的順序運行?

慕俠2389804 2022-12-28 16:07:32
當我執行:val array = arrayListOf<String?>(null, "hello", null)array.sortBy { it == null }println(array)我希望它會null首先打印值,因為這是我指定的選擇器。但是,println(array)返回[hello, null, null].為什么是這樣?
查看完整描述

2 回答

?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

表達方式:

it == null

返回Boolean結果truefalse,這就是您用來對數組進行排序的結果。
該值true大于false,您可以通過執行:

println(false < true)

這將打印

true

使用您的代碼:

array.sortBy { it == null }

對于表達式it == null返回的每個項目,false它將被放置在它將返回的任何項目之前true。
所以反其道而行之:

array.sortBy { it != null }

結果:

[null, null, hello]


查看完整回答
反對 回復 2022-12-28
?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

請記住,對每個對象sortBy執行您指定的轉換,然后按轉換對象的自然順序排序。

您將對象轉換為真值(如果對象為空)和假值(如果對象不為空)。這是您轉換后的數組列表:

true false true

這將根據布爾值的自然順序進行排序,即 false 在前,因此第二個元素將與第一個元素交換,從而產生結果。

要達到您想要的結果,請使用{ it != null }.



查看完整回答
反對 回復 2022-12-28
  • 2 回答
  • 0 關注
  • 188 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號