Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何过滤Kotlin中的ArrayList,以便只包含符合条件的元素?_List_Kotlin_Filtering - Fatal编程技术网

如何过滤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!")
    }