首页 > 解决方案 > Kotlin - 在数组中查找匹配的对象

问题描述

假设我有一个字符串数组,我想获取一个包含匹配对象的列表,例如:

var locales=Locale.getAvailableLocales()
val filtered = locales.filter { l-> l.language=="en" } 

除了,我想将它与另一个列表进行比较,而不是单个值,例如:

val lang = listOf("en", "fr", "es")

我怎么做?我正在寻找一种没有任何循环的单线解决方案。谢谢!

标签: arrayslistfilterkotlin

解决方案


像这样

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一样的低时间复杂度。


推荐阅读