我有一個串列,其中的每個元素都包含一個內部串列。我需要獲取外部串列的一個元素,其中至少一次滿足內部串列的指定條件。我寫了這樣的代碼:
outerList?.find {
!it.items.isNullOrEmpty() && it.items?.any { item ->
item.isVisible == visibility &&
item.progress == currentProgress
} == true
}?.let { outerItem ->
currentItem = outerItem
// here some logic
} ?: run {
currentItem = null
// here some logic
}
但我不確定這段代碼是否有效。也許您應該使用序列而不是串列?您能否告訴我哪種解決方案在我的案例中在執行時間和記憶體消耗方面最有效?
uj5u.com熱心網友回復:
序列在這里無濟于事,因為您只對外部串列執行一項操作,對內部串列執行一項操作。
你的!it.items.isNullOrEmpty()支票對?.any你跟進的人來說是完全多余的,所以你可以洗掉它。也許最簡潔的寫法是:
outerList?.find {
it.items.orEmpty().any { item ->
item.isVisible == visibility && item.progress == currentProgress
}
}
永遠不要這樣做:?.let { ... } ?: run { }。除了可讀性非常差之外,它還容易出錯。如果不小心從let塊中回傳 null ,run塊也會意外運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/360850.html
上一篇:Python-通過元組搜索
