Kotlin-检查数组包含值的惯用方法

在 Kotlin,检查字符串数组是否包含值的惯用方法是什么。

我想:

array.filter { it == "value" }.any()

还有更好的办法吗?

126906 次浏览

The equivalent you are looking for is the contains operator.

array.contains("value")

Kotlin offer an alternative infix notation for this operator:

"value" in array

It's the same function called behind the scene, but since infix notation isn't found in Java we could say that in is the most idiomatic way.

Using in operator is an idiomatic way to do that.

val contains = "a" in arrayOf("a", "b", "c")

You can use the in operator which, in this case, calls contains:

"value" in array

You could also check if the array contains an object with some specific field to compare with using any()

listOfObjects.any{ object -> object.fieldxyz == value_to_compare_here }

Here is code where you can find specific field in ArrayList with objects. The answer of Amar Jain helped me:

listOfObjects.any{ it.field == "value"}

You can use it..contains(" ")

 data class Animal (val name:String)




val animals = listOf(Animal("Lion"), Animal("Elephant"), Animal("Tiger"))


println(animals.filter { it.name.contains("n") }.toString())

output will be

[Animal(name=Lion), Animal(name=Elephant)]

You can use find method, that returns the first element matching the given [predicate], or null if no such element was found. Try this code to find value in array of objects

 val findedElement = array?.find {
it.id == value.id
}
if (findedElement != null) {
//your code here
}