【发布时间】:2017-07-03 06:02:40
【问题描述】:
在 Kotlin 中检查字符串数组是否包含值的惯用方法是什么?就像 ruby 的 #include?.
我想过:
array.filter { it == "value" }.any()
有没有更好的办法?
【问题讨论】:
在 Kotlin 中检查字符串数组是否包含值的惯用方法是什么?就像 ruby 的 #include?.
我想过:
array.filter { it == "value" }.any()
有没有更好的办法?
【问题讨论】:
您可以使用find 方法,该方法返回与给定[谓词] 匹配的第一个元素,如果没有找到这样的元素,则返回null。
试试这段代码,在 array 的对象中找到 value
val findedElement = array?.find {
it.id == value.id
}
if (findedElement != null) {
//your code here
}
【讨论】:
array.indexIf(Object o) 方法找到一个位置 -> 将返回第一个元素的索引,array.lastIndexOf(Object o) -> 将返回最后一个元素的索引。您也可以使用谓词等array.indexOfLast { it.name == "test " } 或array.indexOfFirst { it.name == "test "}
你可以使用它..contains(" ")
data class Animal (val name:String)
val animals = listOf(Animal("Lion"), Animal("Elephant"), Animal("Tiger"))
println(animals.filter { it.name.contains("n") }.toString())
输出将是
[Animal(name=Lion), Animal(name=Elephant)]
【讨论】:
这是您可以在 ArrayList 中找到带有对象的特定字段的代码。 Amar Jain 的回答帮助了我:
listOfObjects.any{ it.field == "value"}
【讨论】:
您还可以使用any()检查数组是否包含具有某些特定字段的对象以进行比较
listOfObjects.any{ object -> object.fieldxyz == value_to_compare_here }
【讨论】:
您正在寻找的等价物是contains 运算符。
array.contains("value")
Kotlin 为该运算符提供了替代 infix notation:
"value" in array
这与在后台调用的函数相同,但由于在 Java 中找不到 infix notation,我们可以说 in 是最惯用的方法。
【讨论】:
使用 in 运算符是一种惯用的方式。
val contains = "a" in arrayOf("a", "b", "c")
【讨论】:
您可以使用in operator,在这种情况下,它调用contains:
"value" in array
【讨论】: