【问题标题】:Kotlin - Find matching objects in arrayKotlin - 在数组中查找匹配的对象
【发布时间】:2019-05-20 23:00:48
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: arrays list filter kotlin


    【解决方案1】:

    这样

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

    正如 cmets 中所指出的,您可以跳过将参数命名为 lambda,并使用 it 关键字具有以下任一功能:

    val filtered1 = locales.filter{ lang.contains(it.language) }
    val filtered2 = locales.filter{ it.language in lang }
    

    请记住为语言提供合适的数据结构,这样contains() 方法的时间复杂度就会像Set 一样低。

    【讨论】:

    • 或者,更短的:val filtered = locales.filter{ it.language in lang }
    猜你喜欢
    • 2013-09-16
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    相关资源
    最近更新 更多