Kotlin - Идиоматический способ проверки массива содержит значение
Какой идиоматический способ проверить, содержит ли массив строк значение в kotlin? Также как ruby #include?
.
Я хоть о:
array.filter { it == "value" }.any()
Есть ли лучший способ?
Ответы
Ответ 1
Эквивалентом, который вы ищете, является оператор содержит.
array.contains("value")
Kotlin предлагает альтернативную инфиксную нотацию для этого оператора:
"value" in array
Это та же функция, которая вызывается за кулисами, но, поскольку инфиксная нотация не найдена в Java, мы можем сказать, что in
- самый идиоматический способ.
Ответ 2
Вы также можете проверить, содержит ли массив объект с некоторым конкретным полем для сравнения с помощью any()
listOfObjects.any{ object -> object.fieldxyz == value_to_compare_here }
Ответ 3
Вы можете использовать оператор in
, который в этом случае вызывает contains
:
"value" in array
Ответ 4
Использование оператора в - это идиоматический способ сделать это.
val contains = "a" in arrayOf("a", "b", "c")
Ответ 5
Вот код, где вы можете найти определенное поле в ArrayList с объектами. Ответ амара Джайна помог мне:
listOfObjects.any{ it.field == "value"}