gpt4 book ai didi

kotlin - 只要某种条件成立,Kotlin惯用的方式来处理集合

转载 作者:行者123 更新时间:2023-12-02 13:23:16 24 4
gpt4 key购买 nike

我想对集合中的对象执行转换,只要存在满足谓词的对象即可。

调用transform(x)后,该谓词不再对x成立,但可能对之前未持有的其他y成立。但是,该算法可以保证终止。

如何改善呢?

while( col.any (p -> predicate(p)) ) {
val member = col.find { p -> predicate(p) }!!
transform(member)
}

编辑:

结合@jonrsharpe和@hotkey的答案,以下所有内容都更加简洁高效
do {
val member = col.find { predicate(it) }?.also { transform(it) }
} while (member != null)


do {
} while (col.find { predicate(it) }?.also { transform(it) } != null)



while (col.find { predicate(it) }?.also { transform(it) } != null) {}

最佳答案

除了@jonrsharpe在注释中所说的外,您的代码似乎在每次迭代中搜索与predicate相匹配的项目两次,第一次是在any中,然后是在find中(它们找到相同的项目)。

您可以使用find将其减少为仅一次搜索:

do {
val member = col.find { predicate(it) }?.also { transform(it) }
} while (member != null)

关于kotlin - 只要某种条件成立,Kotlin惯用的方式来处理集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50456830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com