J'ai un tableau:
var month: List<String> = arrayListOf("January", "February", "March")
Je dois filtrer la liste pour qu'il ne me reste que "January"
.
Vous pouvez utiliser ce code pour filtrer January du tableau en utilisant ce code
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()
Il existe un certain nombre de fonctions pour filtrer les collections. Si vous souhaitez conserver uniquement les valeurs correspondant à "January"
, vous pouvez utiliser le 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"
Cela vous donnera une liste contenant seulement "January"
.
Si vous souhaitez que tous les mois ne soient pas "January"
, vous pouvez inverser la condition à l'aide de !=
ou utiliser filterNot()
:
months.filter { it != "January" }
months.filterNot { it == "January" }
Cela vous donnera une liste contenant "February"
et "March"
.
Notez que contrairement à Java, utiliser les opérateurs ==
et !=
dans Kotlin revient en fait à appeler la fonction equals
sur les objets. Pour plus d'informations, voir la documentation sur égalité .
Pour obtenir la liste complète des fonctions de collection dans la bibliothèque standard, reportez-vous à la section Référence de l'API .
Vous souhaitez filtrer cette liste de chaînes contenant des mois.
var month : List<String> = arrayListOf("January", "February", "March")
Vous pouvez utiliser filterNot()
méthode de liste. Il retourne une liste contenant tous les éléments sauf le prédicat donné.
var filteredMonthList : List<String> = month.filterNot { s -> s == "January" }
// results: ["February", "March"]
Vous pouvez utiliser filter()
méthode de liste. Il retourne une liste contenant tous les éléments correspondant au prédicat donné.
var filteredMonthList : List<String> = month.filter { s -> s == "January" }
// results: ["January"]
Après filter()
si nous utilisons la méthode single()
, elle retournera une valeur unique et lèvera une exception si plusieurs valeurs figurent dans la liste.
var filteredMonth : String = month.filter { s -> s == "January" }.single()
// result: "January"
Je partage simplement que si vous avez liste personnalisée et vérifiez si nul ou vierge, vous pouvez enregistrer Kotlin en une seule ligne. Faites-le comme ça
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
}
Vous pouvez également vérifier plusieurs conditions
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
}
Remarque: Je suppose que étiquette et valeur sont les variables de Custom Classe modèle.
Vous pouvez également utiliser find ou findLast
. Ceci est spécifiquement conçu pour renvoyer une seule valeur au lieu d'une liste de String
renvoyée dans le cas de filter
.
var month = arrayListOf("January", "February", "March")
var result = month.find { s -> s == "January" }