Kotlin - Найти подходящие объекты в массиве - PullRequest
0 голосов
/ 20 декабря 2018

Допустим, у меня есть массив строк, и я хочу получить список с совпадающими объектами, например:

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

за исключением того, что вместо одного значения я хочу сравнить его с другим спискомНапример:

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

Как мне это сделать?Я ищу решение с одним вкладышем без петель.Спасибо!

1 Ответ

0 голосов
/ 20 декабря 2018

Вот так

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

Как указано в комментариях, вы можете пропустить присвоение имени параметру лямбда-выражения и использовать ключевое слово it, чтобы иметь одно из следующих значений:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...