146 votes

Comment itérer sur hashmap en Kotlin ?

Comment itérer sur HashMap sur Kotlin ?

typealias HashMap<K, V> = HashMap<K, V> (source)

322voto

Alexander Romanov Points 5409

Ce n'est pas si difficile :

for ((key, value) in map) {
    println("$key = $value")
}

O
( <strong>Mise à jour de </strong>conformément à <a href="https://stackoverflow.com/users/2094298/ruckus-t-boom">@RuckusT-Boom's </a>y <a href="https://stackoverflow.com/users/7651178/ken-zira">@KenZira's </a>informations.)

 map.forEach { (key, value) -> println("$key = $value") }

46 votes

Il est à noter que la deuxième version peut causer des problèmes sur Android, donc vous pouvez utiliser map.forEach { (key, value) -> println("$key = $value") }

1 votes

@RuckusT-Boom en quoi cela pose-t-il problème ?

12 votes

Android n'a pas (ou n'avait pas au moment de ce commentaire) un support complet pour Java 8, et le deuxième exemple est un appel Java 8. L'appel équivalent utilisant la déstructuration Kotlin est très similaire, mais les arguments doivent être entourés de parenthèses. { (key, value) -> ... } . Ken Zira a plus d'informations dans sa réponse.

78voto

Ken Zira Points 369

Pour la réponse ci-dessus, faites attention à Android en dessous de N !

map.forEach { key, value -> println("$key = $value") }

référence à Java 8 api qui mène à :

Rejecting re-init on previously-failed class java.lang.Class<T>

map.forEach { (key, value) -> println("$key = $value") }

est Kotlin fonctionnalité

2 votes

Oui, j'ai aussi perdu une demi-journée sur ce problème. for ((key, val) ...) a résolu le problème.

9voto

Whitecat Points 741

Un autre moyen qui n'a pas été mentionné est :

val mapOfItems = hashMapOf(1 to "x", 2 to "y", -1 to "zz")
mapOfItems.map { (key, value) -> println("$key = $value") }

5voto

Sibin Points 194

Utilisez 'for loop' ou 'forEach' ou 'Iterator'.

 fun main(args : Array<String>) {
    val items = HashMap<String, String>()
    items["1"] = "USA"
    items["2"] = "Japan"
    items["3"] = "India"

    //for loop example
    println("\n-- Example 1.1 -- ");
    for ((k, v) in items) {
        println("$k = $v")
    }
    // forEach example
    println("\n-- Example 1.2 --");
    items.forEach { (k, v) ->
        println("$k = $v")
    }

    //Iterator example
    println("\n-- Example 1.3 --");
    val itr = items.keys.iterator()
    while (itr.hasNext()) {
        val key = itr.next()
        val value = items[key]
        println("${key}=$value")
    }

}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X