比方说,我有一个字符串数组,我想获取包含匹配对象的列表,例如:
var locales=Locale.getAvailableLocales()
val filtered = locales.filter { l-> l.language=="en" }
除了,我想将其与另一个列表进行比较,而不是单个值,例如:
val lang = listOf("en", "fr", "es")
我该怎么做?我正在寻找一种没有任何循环的单线解决方案。谢谢!
答案 0 :(得分:5)
赞
var locales = Locale.getAvailableLocales()
val filtered = locales.filter { l -> lang.contains(l.language)}
如注释中所指出的,您可以跳过将参数命名为lambda的操作,并使用it-keyword来实现以下任一功能:
val filtered1 = locales.filter{ lang.contains(it.language) }
val filtered2 = locales.filter{ it.language in lang }
请记住要为语言提供合适的数据结构,以便contains()方法具有较低的时间复杂度,例如Set https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-set/index.html