recorrer - ¿Cómo puedo filtrar un valor de un arraylist en Kotlin?
recorrer arraylist kotlin (5)
Desea filtrar esta lista de cadenas que contienen meses.
var month : List<String> = arrayListOf("January", "February", "March")
Puede utilizar el método de lista filterNot()
. Devuelve una lista que contiene todos los elementos excepto el predicado dado.
var filteredMonthList : List<String> = month.filterNot { s -> s == "January" }
// results: ["February", "March"]
Puede utilizar el método de lista filter()
. Devuelve una lista que contiene todos los elementos que coinciden con el predicado dado.
var filteredMonthList : List<String> = month.filter { s -> s == "January" }
// results: ["January"]
Después de filter()
si usamos el método single()
, devolverá un solo valor y emitirá una excepción si hay más de un valor en la lista.
var filteredMonth : String = month.filter { s -> s == "January" }.single()
// result: "January"
Tengo una matriz:
var month: List<String> = arrayListOf("January", "February", "March")
Tengo que filtrar el mes "January"
de la lista.
Hay una serie de funciones para filtrar colecciones. Si desea mantener solo los valores que coincidan con "January"
, puede usar el filter()
simple 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"
Estos le darán una lista que contiene sólo "January"
.
Si desea que todos los meses que no sean "January"
, puede revertir la condición usando !=
, O usar filterNot()
:
months.filter { it != "January" }
months.filterNot { it == "January" }
Estos te darán una lista que contiene "February"
y "March"
.
Tenga en cuenta que a diferencia de Java, usar los operadores ==
y !=
En Kotlin es en realidad lo mismo que llamar a la función equals
en los objetos. Para más información, consulte la documentación sobre la equality .
Para obtener una lista completa de las funciones de recopilación en la biblioteca estándar, consulte la referencia de la API .
Puede usar este código para filtrar enero de la matriz, usando este código
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 a string
var selectedMonth: String = month.filter { s -> s == "January" }.single()
println("the value 555 is $monthList")
println("the value 555 is $selectedMonth")
Solo comparto que si tiene una lista personalizada y comprueba si está nula o en blanco , puede verificar Kotlin en una sola línea. Solo hágalo así.
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
}
También puedes consultar múltiples condiciones.
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
}
Nota: Supongo que la etiqueta y el valor son las variables de la clase de modelo personalizado .
También puedes usar find o findLast
. Esto está destinado específicamente a devolver solo un valor en lugar de una lista de String
devueltas en caso de filter
.
var month: List<String> = arrayListOf("January", "February", "March")
var result = month.find { s -> s == "January" }