Convertire List in Map in Kotlin

Mattepuffo's logo
Convertire List in Map in Kotlin

Convertire List in Map in Kotlin

Oggi vediamo come convertire una List in Map in Kotlin.

Vedremo tre metodi, usando tre funzioni diverse:

  • associate
  • associateBy
  • map

Le differenze maggiori stanno nella sintassi, ma il risultato è lo stesso.

Quindi quale metodo usare dipende da voi.

Ecco il codice di esempio:

data class Squadra(var nome: String, var classifica: Long);

fun main(args: Array<String>) {
    var classificaList: List<Squadra> = listOf(
        Squadra("roma", 1),
        Squadra("milan", 3),
        Squadra("inter", 2)
    );
    println("Lista: $classificaList");

    useAssociate(classificaList);
    useAssociateBy(classificaList);
    useMap(classificaList);
}

fun useAssociate(classificaList: List<Squadra>) {
    val mapSquadre: Map<String, Long> = classificaList.associate { Pair(it.nome, it.classifica) };
    println("Map: $mapSquadre");

    val mapSquadre2: Map<String, Squadra> = classificaList.associate { Pair(it.nome, it) };
    println("Map2: $mapSquadre2");
}

fun useAssociateBy(classificaList: List<Squadra>) {
    val mapSquadre: Map<String, Long> = classificaList.associateBy({ it.nome }, { it.classifica });
    println("Map by: $mapSquadre");

    val mapSquadre2: Map<String, Squadra> = classificaList.associateBy({ it.nome }, { it });
    println("Map2 by: $mapSquadre2");
}

fun useMap(classificaList: List<Squadra>) {
    val mapSquadre: Map<String, Long> = classificaList.map { it.nome to it.classifica }.toMap();
    println("Map map: $mapSquadre");

    val mapSquadre2: Map<String, Squadra> = classificaList.map { it.nome to it }.toMap();
    println("Map2 map: $mapSquadre2");
}

Ed ecco l'output:

Lista: [Squadra(nome=roma, classifica=1), Squadra(nome=milan, classifica=3), Squadra(nome=inter, classifica=2)]
Map: {roma=1, milan=3, inter=2}
Map2: {roma=Squadra(nome=roma, classifica=1), milan=Squadra(nome=milan, classifica=3), inter=Squadra(nome=inter, classifica=2)}
Map by: {roma=1, milan=3, inter=2}
Map2 by: {roma=Squadra(nome=roma, classifica=1), milan=Squadra(nome=milan, classifica=3), inter=Squadra(nome=inter, classifica=2)}
Map map: {roma=1, milan=3, inter=2}
Map2 map: {roma=Squadra(nome=roma, classifica=1), milan=Squadra(nome=milan, classifica=3), inter=Squadra(nome=inter, classifica=2)}

Enjoy!


Condividi su Facebook

Commentami!