133

How can I check if an array of strings contains a value in Kotlin? Just like ruby's #include?.

I thought about:

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

Is there another way?

0

7 Answers 7

179

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.

Sign up to request clarification or add additional context in comments.

4 Comments

When I try this in Kotlin I get a "Type inference failed. The value of the type parameter T should be mentioned in the input Types." private var domainsArray = arrayOf("@ebay.com", "@google.com", "@gmail.com", "@umd.edu") var domainFound = Arrays.asList(domainsArray).contains(email)
Just write var domainFound = domainsArray.contains(email) or more idiomatic var domainFound = email in domainsArray
Any idea how to compare with ignorecase string? array.contains("value") do not check ignorecase for string.
You could map array with the toLowerCase String extension function before calling contains.
139

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

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

Comments

46

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"}

Comments

40

Using in operator is an idiomatic way to do that.

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

Comments

24

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

"value" in array

Comments

10

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)]

Comments

8

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           
 } 

2 Comments

How can you get the position of findedElement value from array?
@AnzyShQ you can find a position with a methods array.indexIf(Object o) -> will return you index of first founded element, array.lastIndexOf(Object o) -> will return you index of last founded element. You can also use predicate too, etc array.indexOfLast { it.name == "test " } or array.indexOfFirst { it.name == "test "}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.