我怎样才能从Kotlin的数组列表中筛选出一个值呢?
我有一个数组:
var month: List = arrayListOf("January", "February", "March")
我必须从列表中过滤出"January"
月份。
你可以使用这段代码从数组中过滤掉1月份
var month: List = arrayListOf("January", "February", "March") // to get the result as list var monthList: List = month.filter { s -> s == "January" } // to get aa string var selectedMonth: String = month.filter { s -> s == "January" }.single() println("the value 555 is $monthList") println("the value 555 is $selectedMonth")
如果您只想保留与"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参考 。
我只是分享,如果你有自定义列表,并检查是否为空或空白,你可以在单行Kotlin检查只是这样做
fun filterList(listCutom: List?) { 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?) { 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 }
注意:我假设标签和值是自定义模型类的variables。
你想过滤这个包含数月的字符串列表。
var month : List = arrayListOf("January", "February", "March")
你可以使用filterNot()
方法的列表。 它返回一个包含除给定谓词之外的所有元素的列表。
var filteredMonthList : List = month.filterNot { s -> s == "January" } // results: ["February", "March"]
你可以使用list filter()
方法。 它返回一个包含所有匹配给定谓词的元素的列表。
var filteredMonthList : List = month.filter { s -> s == "January" } // results: ["January"]
如果我们使用single()
方法,在filter()
如果列表中有多个值,它将返回一个值并抛出一个exception。
var filteredMonth : String = month.filter { s -> s == "January" }.single() // result: "January"
你也可以使用find或findLast
。 这是专门用来返回一个值,而不是filter
返回的String
列表。
var month: List = arrayListOf("January", "February", "March") var result = month.find { s -> s == "January" }
- Kotlin调用Java平台types导致llegalStateException
- 在Instant App中应用插件“kotlin-android”会导致“null不能转换为非空types的com.android.build.gradleBasePlugin”
- 使用Kotlin将图像从ImageView传递给Android中的另一个Activity
- 与标志的kotlin startactivity
- Android – 不要生成值-v26
- 将Kotlin添加到现有Java项目会打破Android Studio gradle消息错误
- kotlin限定符注释被忽略
- 按位&不适用于kotlin中的字节
- Kotlin的数据类== C#的结构?