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

jtu*_*lla 30 arrays kotlin

检查字符串数组是否包含kotlin值的惯用方法是什么?就像红宝石一样#include?.

我虽然说:

array.filter { it == "value" }.any()
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

Ama*_*ain 45

您还可以检查数组是否包含具有某些特定字段的对象以与使用进行比较 any()

listOfObjects.any{ object -> object.fieldxyz == value_to_compare_here }
Run Code Online (Sandbox Code Playgroud)


Geo*_*izy 37

您正在寻找的等价物是包含运算符.

array.contains("value") 
Run Code Online (Sandbox Code Playgroud)

Kotlin 为此运营商提供了另一种中缀符号:

"value" in array
Run Code Online (Sandbox Code Playgroud)

这是在场景后面调用的相同函数,但由于在Java中找不到中缀符号,我们可以说这in是最惯用的方式.

  • 当我在 Kotlin 中尝试此操作时,我收到“类型推断失败。类型参数 T 的值应在输入类型中提及”。private vardomainsArray = arrayOf("@ebay.com", "@google.com", "@gmail.com", "@umd.edu") var domainFound = Arrays.asList(domainsArray).contains(email) (2认同)

Dim*_*tar 28

这是您可以在带有对象的 ArrayList 中找到特定字段的代码。Amar Jain 的回答帮助了我:

listOfObjects.any{ it.field == "value"}
Run Code Online (Sandbox Code Playgroud)


mfu*_*n26 18

您可以使用in运算符,在这种情况下,调用contains:

"value" in array


Ger*_*son 14

运算符中使用是一种惯用的方法.

val contains = "a" in arrayOf("a", "b", "c")
Run Code Online (Sandbox Code Playgroud)


Jib*_*bin 7

你可以使用它..contains(" ")

 data class Animal (val name:String)


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

 println(animals.filter { it.name.contains("n") }.toString())
Run Code Online (Sandbox Code Playgroud)

输出将是

[Animal(name=Lion), Animal(name=Elephant)]
Run Code Online (Sandbox Code Playgroud)


L.P*_*yan 7

您可以使用find方法,该方法返回与给定 [predicate] 匹配的第一个元素,或者null如果没有找到这样的元素。尝试使用此代码来value查找array对象

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