热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在Kotlin中过滤和处理hashmap条目

如何解决《在Kotlin中过滤和处理hashmap条目》经验,为你挑选了1个好方法。

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

我想做以下事情:

myMap.filterValues{ someCondition }.forEach { doSomethingWithTheEntry }

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

我当然可以写

myMap.forEach { if(someCondition) doSomethingWithTheEntry }

但功能式过滤方法看起来更优雅.



1> hotkey..:

为了避免存储中间值,您可以使用Sequence,这有点懒惰等效Iterable(有关详细信息,请参阅另一个问答).

要处理的条目MapSequence,与将其转换.asSequence()(同样,没有中间集合创建),然后使用.filter { ... }.forEach { ... }该序列:

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

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

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


推荐阅读
author-avatar
love糸_603
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有