如何过滤Kotlin中的ArrayList,以便只包含符合条件的元素?
我有一个数组:如何过滤Kotlin中的ArrayList,以便只包含符合条件的元素?,list,kotlin,filtering,List,Kotlin,Filtering,我有一个数组: var month: List<String> = arrayListOf("January", "February", "March") var-month:List=arrayListOf(“一月”、“二月”、“三月”) 我必须筛选列表,因此只剩下“一月”您可以使用此代码从数组中筛选出一月 var month: List<String> = arrayListOf("January", "February", "March") // to get
var month: List<String> = arrayListOf("January", "February", "March")
var-month:List=arrayListOf(“一月”、“二月”、“三月”)
我必须筛选列表,因此只剩下
“一月”
您可以使用此代码从数组中筛选出一月
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()
var-month:List=arrayListOf(“一月”、“二月”、“三月”)
//以列表形式获取结果
var monthList:List=month.filter{s->s==“一月”}
//获取字符串
var selectedMonth:String=month.filter{s->s==“一月”}.single()
您想筛选包含月份的字符串列表
var month : List<String> = arrayListOf("January", "February", "March")
您可以使用列表的方法。它返回一个列表,其中包含与给定谓词匹配的所有元素
var filteredMonthList : List<String> = month.filterNot { s -> s == "January" }
// results: ["February", "March"]
var filteredMonthList : List<String> = month.filter { s -> s == "January" }
// results: ["January"]
有许多用于筛选集合的函数,如果只想保留与
“一月”
匹配的值,可以使用简单的:
这些将为您提供一个仅包含“一月”
的列表
如果您希望所有月份都不是“一月”
,您可以使用来反转条件=代码>,或使用:
这些将为您提供一个包含“二月”
和“三月”
的列表
请注意,与Java不同,使用==
和=运算符实际上与调用对象上的equals
函数相同。有关更多信息,请参阅关于的文档
有关标准库中集合函数的完整列表,请参阅。我只是在分享,如果您有自定义列表,并检查它是空还是空,您可以在单行中签入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过滤器列表(listCutom:List?){
var fiterList=listCutom!!.filter{it.label!=“”
//在这里,您可以得到没有任何标签空白的列表
}
您还可以检查多个条件
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
}
fun过滤器列表(listCutom:List?){
var fiterList=listCutom!!.filter{it.label!=“”&&it.value!=“”}
//在这里,您可以得到没有任何标签或值为空的列表
}
注:我假设标签和值是自定义模型类的变量 您也可以使用或findLast
。这特别意味着只返回一个值,而不是在过滤器
的情况下返回的字符串
列表
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!")
}
val number=listOf(“一”、“二”、“三”、“四”)
变量项:List=numbers.filter{s->s==“one”}
var item=numbers.singleOrNull{it==“一”}
如果(项!=null){
打印(“找到:$item”)
}否则{
打印(“未找到!”)
}
请注意,在Kotlin中,您不必显式使用.equals
。只使用==
会更为惯用。这与请求相反,他们希望从列表中删除“一月”,而不仅仅保留一月,请更新答案以确保正确,否则,应将接受的答案从zsmb13移动到包含这两种情况的答案。您可以使用以下命令进一步简化它:month.single{s->s==“January”}
如果您有一个自定义对象列表,而不仅仅是一些内置类型,如Int,还是字符串?这与问题相反。问题要求过滤月份,这意味着删除它。你做相反的事情,过滤除月份之外的所有内容。问题的措辞应该更清楚一些,如“过滤掉月份”@JaysonMinard请现在检查答案。@JaysonMinard谢谢。答案看起来棒极了。请澄清您希望从列表中筛选出“一月”的问题(删除),或者筛选列表中只有“一月”。。。答案中对这个问题的解释似乎与合理的解释相反。对于Kotlin的新开发人员来说,浏览STDLIB API参考指南是一个好主意,这样您就知道什么是可用的。如果来自Java8流,您可以在我需要筛选出的1月份中了解等价物。我已经编辑了问题筛选或筛选?如何筛选多个值?比如说,我想把“一月”和“三月”都从列表中过滤掉?你可以做一些类似于months.filter{it!在列表中(“一月”、“三月”}
。
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
}
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!")
}