我有一个数组:
var month: List<String> = arrayListOf("January", "February", "March")
我需要筛选列表,以便只剩下"January"
。
我有一个数组:
var month: List<String> = arrayListOf("January", "February", "March")
我需要筛选列表,以便只剩下"January"
。
您可以使用此代码从数组中筛选出1月份,代码如下:
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()
.equals
。更符合习惯的做法是直接使用 ==
,这样就可以正确地执行操作。 - zienkikkmonth.single { s -> s == "January" }
。 - Matthew Patiencemonth.single { it == "January" }
。 - William Hu有许多用于过滤集合的函数。如果你想保留与"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"
这将为您提供一个仅包含 "January"
的列表。
如果您想要所有不是 "January"
的月份,您可以使用 !=
条件反转,或者使用 filterNot()
方法:
months.filter { it != "January" }
months.filterNot { it == "January" }
这将给你一个包含"February"
和"March"
的列表。
请注意,与Java不同,在Kotlin中使用==
和!=
运算符实际上等同于在对象上调用equals
函数。有关更多信息,请参见有关相等性的文档。
有关标准库中集合函数的完整列表,请参见API参考。
months.filter { it !in listOf("January", "March") }
。 - zsmb13你想要筛选包含月份的字符串列表。
var month : List<String> = arrayListOf("January", "February", "March")
你可以使用列表的 filterNot()
方法。它返回一个除了满足给定谓词的元素以外的所有元素组成的列表。var filteredMonthList : List<String> = month.filterNot { s -> s == "January" }
// results: ["February", "March"]
你可以使用列表的 filter()
方法。它返回一个包含所有满足给定谓词的元素的列表。var filteredMonthList : List<String> = month.filter { s -> s == "January" }
// results: ["January"]
如果我们在filter()
之后使用single()
方法,它将返回一个单一的值,并且如果列表中有多个值,则会抛出异常。
var filteredMonth : String = month.filter { s -> s == "January" }.single()
// result: "January"
我想分享一下,如果你有一个自定义列表并检查它是否为null或空白,你可以在Kotlin中用单行代码进行检查。 就像这样
我只是分享一下,如果你有自定义列表并且想要检查它是否为null或者为空,你可以在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
}
你也可以检查多个条件
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
}
注意:我假设标签和值是Custom模型类的变量。
您还可以使用find或findLast
。这专门用于仅返回一个值,而不是在使用filter
时返回String
列表。
var month = arrayListOf("January", "February", "March")
var result = month.find { s -> s == "January" }
按条件过滤
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!")
}