Maison > Java > javaDidacticiel > Comment puis-je convertir efficacement une liste Java en carte à l'aide de flux ?

Comment puis-je convertir efficacement une liste Java en carte à l'aide de flux ?

Barbara Streisand
Libérer: 2024-11-28 19:31:11
original
461 Les gens l'ont consulté

How Can I Efficiently Convert a Java List to a Map Using Streams?

Conversion d'une liste en carte en Java

En Java, la conversion d'une liste en carte offre plusieurs avantages, notamment une récupération efficace des données, une organisation structurée et une représentation concise. Cet article explore l'approche optimale pour convertir une liste en carte.

Approche de conversion optimale

Avec l'introduction de Java 8, le processus de conversion est devenu considérablement simplifié en utilisant streams et la classe Collectors. L'approche suivante montre comment réaliser une conversion de liste en carte en une seule ligne :

Map<String, Item> map = list.stream().collect(Collectors.toMap(Item::getKey, item -> item));
Copier après la connexion

Avantages de l'approche Java 8

Cette approche offre plusieurs avantages :

  • Concision : La syntaxe sur une seule ligne élimine le besoin d'itération manuelle et un mappage explicite.
  • Efficacité : Diffuse les éléments de processus paresseusement, ce qui optimise l'utilisation de la mémoire et réduit le temps de calcul.
  • Extensibilité : La classe Collectors fournit une gamme d'opérations de collecte, permettant des conversions personnalisées.

Code Démonstration

L'extrait de code suivant fournit un exemple d'utilisation de flux pour convertir une liste d'objets Item en une carte :

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class Test {

    public static void main(String[] args) {
        List<Item> list = Arrays.asList(new Item(1), new Item(2), new Item(3), new Item(4));

        Map<String, Item> map = list.stream()
                .collect(Collectors.toMap(Item::getKey, item -> item));

        map.forEach((k, v) -> System.out.println(k + " => " + v));
    }
}

class Item {

    private final int i;

    public Item(int i) {
        this.i = i;
    }

    public String getKey() {
        return "Key-" + i;
    }

    @Override
    public String toString() {
        return "Item [i=" + i + "]";
    }
}
Copier après la connexion

Sortie :

Key-1 => Item [i=1]
Key-2 => Item [i=2]
Key-3 => Item [i=3]
Key-4 => Item [i=4]
Copier après la connexion

Gestion des clés en double

Dans Dans les cas où des valeurs de clé en double existent dans la liste, vous pouvez spécifier un opérateur de fusion lors de l'utilisation de la méthode Collectors.toMap. Cet opérateur détermine la manière dont les clés en double sont gérées. Par exemple, pour additionner les valeurs associées aux clés en double, vous utiliserez l'opérateur suivant :

Map<String, Integer> map = intList.stream()
        .collect(Collectors.toMap(i -> String.valueOf(i % 3), i -> i, Integer::sum));
Copier après la connexion

Cela afficherait :

0 => 9 (i.e. 3 + 6)
1 => 5 (i.e. 1 + 4)
2 => 7 (i.e. 2 + 5)
Copier après la connexion

Conclusion

L'utilisation de streams et de la classe Collectors fournit une méthode efficace et concise pour convertir une liste en carte en Java. Cette approche simplifie le processus de conversion et offre une flexibilité supplémentaire dans la gestion des clés en double.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal