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

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

07-28 09:36