Maison > Java > javaDidacticiel > Comment puis-je convertir efficacement une liste en carte dans Java 8 ?

Comment puis-je convertir efficacement une liste en carte dans Java 8 ?

DDD
Libérer: 2024-12-28 10:32:09
original
1002 Les gens l'ont consulté

How Can I Efficiently Convert a List to a Map in Java 8?

Solution Java 8 pour convertir la liste into Map

Dans Java 8, la conversion d'une liste d'objets en carte peut être réalisée efficacement à l'aide d'opérations de flux. Considérons le scénario suivant dans lequel nous souhaitons mapper une liste d'objets Choice à un objet Map en fonction du champ de nom des objets Choice.

Approche traditionnelle de Java 7

Dans Java 7, nous utilisons généralement une boucle for-each et construisons manuellement la carte :

private Map<String, Choice> nameMap(List<Choice> choices) {
    final Map<String, Choice> hashMap = new HashMap<>();
    for (final Choice choice : choices) {
        hashMap.put(choice.getName(), choice);
    }
    return hashMap;
}
Copier après la connexion

Approche du flux Java 8

Java 8 les flux fournissent une manière plus concise et expressive d'accomplir cette tâche :

Map<String, Choice> result =
    choices.stream().collect(Collectors.toMap(Choice::getName, Function.identity()));
Copier après la connexion

Décomposition du code

  • choices.stream() crée un flux à partir de les choix de la liste d'entrée.
  • Collectors.toMap() est un collecteur qui accumule des éléments dans une carte. Il prend deux arguments :

    • Choice::getName : Une fonction qui extrait la clé de carte (nom) de chaque objet Choice.
    • Function.identity() : Une fonction qui renvoie l'objet d'entrée lui-même, qui dans ce cas est l'objet Choice.

En utilisant Collectors.toMap() collecteur, nous mappons efficacement chaque champ de nom à son objet Choice correspondant dans le résultat de la carte résultant. Cette approche simplifie le processus de cartographie et évite le besoin d'itérations de boucles manuelles et de construction de cartes.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal