gpt4 book ai didi

hashmap - 在 Kotlin 中过滤和处理 hashmap 条目

转载 作者:行者123 更新时间:2023-12-04 19:27:54 26 4
gpt4 key购买 nike

我可能遗漏了一些非常明显的内容:如何在 Kotlin 中有效地过滤和迭代 HashMap 的条目?

我想做以下事情:

myMap.filterValues{ someCondition }.forEach { doSomethingWithTheEntry }

如何避免创建中间对象? filterValues 将创建一个 HashMap,这里并不真正需要它。

我当然可以写
myMap.forEach { if(someCondition) doSomethingWithTheEntry }

但函数式过滤器方法看起来更优雅。

最佳答案

为了避免存储中间值,您可以使用 Sequence ,这在某种程度上相当于 Iterable (详见 another Q&A)。

处理 Map 的条目作为 Sequence ,将其转换为 .asSequence() (同样,没有创建中间集合)然后使用 .filter { ... } .forEach { ... } 在序列上:

myMap.asSequence().filter { someCondition(it) }.forEach { doSomething(it) }

这将创建一个管道,它将一个一个地查询条目,检查它们的谓词,如果匹配,则运行该操作,而不存储中间值。

然而,效率取决于集合大小和操作的复杂性,因为 Sequence 的惰性不是免费的:它引入了一些开销,如果您只在性能关键代码中运行小集合的简单转换,这可能会变得相当可观。

关于hashmap - 在 Kotlin 中过滤和处理 hashmap 条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49110002/

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