Kotlin - 在数组中查找匹配的对象

8

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

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

除此之外,我想将其与另一个列表进行比较,而不是单个值,例如:

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

我该怎么做?我正在寻找一行代码的解决方案,不需要任何循环。谢谢!

1个回答

13

就像这样

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


5
甚至更简洁:val filtered = locales.filter{ it.language in lang }的意思是筛选出语言属于 lang 中的 locales - gidds

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接