我怎样才能从Kotlin的数组列表中筛选出一个值呢?

我有一个数组:

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 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参考 。

你想过滤这个包含数月的字符串列表。

 var month : List<String> = arrayListOf("January", "February", "March") 

你可以使用filterNot()方法的列表。 它返回一个包含除给定谓词之外的所有元素的列表。

 var filteredMonthList : List<String> = month.filterNot { s -> s == "January" } // results: ["February", "March"] 

你可以使用list filter()方法。 它返回一个包含所有匹配给定谓词的元素的列表。

 var filteredMonthList : List<String> = month.filter { s -> s == "January" } // results: ["January"] 

如果我们使用single()方法,在filter()如果列表中有多个值,它将返回一个值并抛出一个异常。

 var filteredMonth : String = month.filter { s -> s == "January" }.single() // result: "January"