Ich habe ein Array:
var month: List<String> = arrayListOf("January", "February", "March")
Ich muss die Liste filtern, damit ich nur noch übrig habe "January"
.
Ich habe ein Array:
var month: List<String> = arrayListOf("January", "February", "March")
Ich muss die Liste filtern, damit ich nur noch übrig habe "January"
.
Antworten:
Mit diesem Code können Sie den Januar mithilfe dieses Codes aus dem Array herausfiltern
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()
.equals
explizit verwenden müssen. Es wäre idiomatischer, nur das zu verwenden, ==
was das Richtige tut.
month.single { s -> s == "January" }
Es gibt eine Reihe von Funktionen zum Filtern von Sammlungen. Wenn Sie nur übereinstimmende Werte beibehalten möchten "January"
, können Sie Folgendes verwenden 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"
Diese geben Ihnen eine Liste, die nur enthält "January"
.
Wenn Sie alle Monate möchten, die nicht sind "January"
, können Sie den Zustand entweder umkehren !=
oder verwenden filterNot()
:
months.filter { it != "January" }
months.filterNot { it == "January" }
Diese geben Ihnen eine Liste mit "February"
und "March"
.
Beachten Sie, dass im Gegensatz zu Java die Verwendung der Operatoren ==
und !=
in Kotlin tatsächlich dem Aufruf der equals
Funktion für die Objekte entspricht. Weitere Informationen finden Sie in den Dokumenten zur Gleichstellung .
Die vollständige Liste der Erfassungsfunktionen in der Standardbibliothek finden Sie in der API-Referenz .
months.filter { it !in listOf("January", "March" }
.
Sie möchten diese Liste von Zeichenfolgen filtern, die Monate enthalten.
var month : List<String> = arrayListOf("January", "February", "March")
Sie können die filterNot()
Methode der Liste verwenden. Es wird eine Liste zurückgegeben, die alle Elemente außer dem angegebenen Prädikat enthält.
var filteredMonthList : List<String> = month.filterNot { s -> s == "January" }
// results: ["February", "March"]
Sie können die filter()
Methode der Liste verwenden. Es wird eine Liste zurückgegeben, die alle Elemente enthält, die dem angegebenen Prädikat entsprechen.
var filteredMonthList : List<String> = month.filter { s -> s == "January" }
// results: ["January"]
Nach dem, filter()
wenn wir verwenden single()
Methode , dann wird es einen einzelnen Wert zurückgeben und eine Ausnahme auslösen , wenn mehr als ein Wert in der Liste ist.
var filteredMonth : String = month.filter { s -> s == "January" }.single()
// result: "January"
Ich teile nur, dass Sie, wenn Sie eine benutzerdefinierte Liste haben und prüfen, ob diese null oder leer ist, Kotlin in einer einzigen Zeile einchecken können. Tun Sie es einfach so
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
}
Sie können auch mehrere Bedingungen überprüfen
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
}
Hinweis: Ich gehe davon aus, dass label & value die Variablen der benutzerdefinierten Modellklasse sind.
Sie können auch find oder verwenden findLast
. Dies ist speziell dazu gedacht, nur einen Wert anstelle einer Liste von String
zurückgegebenen im Fall von zurückzugeben filter
.
var month = arrayListOf("January", "February", "March")
var result = month.find { s -> s == "January" }