Nit*_*itt 48 filtering list kotlin
我有一个数组:
var month: List<String> = arrayListOf("January", "February", "March")
Run Code Online (Sandbox Code Playgroud)
我必须过滤列表,所以我只留下"January".
Nit*_*lal 73
您可以使用此代码从数组中过滤掉January
var month: List<String> = arrayListOf("January", "February", "March")
// to get the result as list
var monthList: List<String> = month.filter { s -> s == "January" }
// to get a string
var selectedMonth: String = month.filter { s -> s == "January" }.single()
Run Code Online (Sandbox Code Playgroud)
zsm*_*b13 33
有许多用于过滤集合的函数,如果只想保持值匹配"January",可以使用简单的filter():
val months = listOf("January", "February", "March")
months.filter { month -> month == "January" } // with explicit parameter name
months.filter { it == "January" } // with implicit parameter name "it"
Run Code Online (Sandbox Code Playgroud)
这些将为您提供仅包含的列表"January".
如果您希望所有月份都没有 "January",您可以使用反转条件!=,或使用filterNot():
months.filter { it != "January" }
months.filterNot { it == "January" }
Run Code Online (Sandbox Code Playgroud)
这些将为您提供包含"February"和的列表"March".
请注意,与Java不同,在Kotlin中使用==和!=运算符实际上与equals在对象上调用函数相同.有关更多信息,请参阅有关相等性的文档.
有关标准库中的集合函数的完整列表,请参阅API参考.
Avi*_*kar 12
您想要过滤包含月份的字符串列表.
var month : List<String> = arrayListOf("January", "February", "March")
Run Code Online (Sandbox Code Playgroud)
您可以使用filterNot()列表的方法.它返回一个包含除给定谓词之外的所有元素的列表.
var filteredMonthList : List<String> = month.filterNot { s -> s == "January" }
// results: ["February", "March"]
Run Code Online (Sandbox Code Playgroud)
您可以使用filter()列表的方法.它返回一个列表,其中包含与给定谓词匹配的所有元素.
var filteredMonthList : List<String> = month.filter { s -> s == "January" }
// results: ["January"]
Run Code Online (Sandbox Code Playgroud)
后filter()如果我们使用single()方法,那么它会返回一个值,如果超过一个值列表抛出异常.
var filteredMonth : String = month.filter { s -> s == "January" }.single()
// result: "January"
Run Code Online (Sandbox Code Playgroud)
您也可以使用find或findLast。这特别意味着仅返回一个值,而不是String在filter.
var month = arrayListOf("January", "February", "March")
var result = month.find { s -> s == "January" }
Run Code Online (Sandbox Code Playgroud)
我只是分享,如果你有自定义列表并检查它是否为空或空白你可以在单行检查Kotlin只是这样做
fun filterList(listCutom: List<Custom>?) {
var fiterList = listCutom!!.filter { it.label != "" }
//Here you can get the list which is not having any kind of lable blank
}
Run Code Online (Sandbox Code Playgroud)
您也可以检查多个条件
fun filterList(listCutom: List<Custom>?) {
var fiterList = listCutom!!.filter { it.label != "" && it.value != ""}
//Here you can get the list which is not having any kind of lable or value blank
}
Run Code Online (Sandbox Code Playgroud)
注意:我假设label和value是Custom Model类的变量.
按谓词过滤
val numbers = listOf("one", "two", "three", "four")
var items: List<String> = numbers.filter { s -> s == "one" }
var item = numbers.singleOrNull { it == "one" }
if (item != null) {
print("FOUND:$item")
} else {
print("Not FOUND!")
}
Run Code Online (Sandbox Code Playgroud)