arrays - Kotlin - 在数组中查找匹配的对象
问题描述
假设我有一个字符串数组,我想获取一个包含匹配对象的列表,例如:
var locales=Locale.getAvailableLocales()
val filtered = locales.filter { l-> l.language=="en" }
除了,我想将它与另一个列表进行比较,而不是单个值,例如:
val lang = listOf("en", "fr", "es")
我怎么做?我正在寻找一种没有任何循环的单线解决方案。谢谢!
解决方案
像这样
var locales = Locale.getAvailableLocales()
val filtered = locales.filter { l -> lang.contains(l.language)}
正如评论中所指出的,您可以跳过将参数命名为 lambda,并使用it
关键字具有以下任一功能:
val filtered1 = locales.filter{ lang.contains(it.language) }
val filtered2 = locales.filter{ it.language in lang }
请记住为语言提供合适的数据结构,以便该contains()
方法具有像Set一样的低时间复杂度。
推荐阅读
- dockerfile - ECS Fargate 日志文件位置
- python - StreamHandler 的实例默认使用 sys.stderr 是什么意思?
- r - 更改数据框格式并使用复制作为列执行方差分析
- vba - 使用 VBA 处理在 VSTO 加载项中定义的功能区控件
- python-3.x - AdamOptimizer 返回无效数据类型错误
- javascript - “vue.config.js”文件在哪里?
- json - 在 Unity 3D 中使用从 WWW 接收的数据
- blockchain - 区块链共识 51% vs 50%
- c# - Process.Start 在主应用程序关闭之前不会启动进程
- javascript - 如何使用 javascript 为表格添加边框?