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

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

Patricia Arquette
Patricia Arquetteoriginal
2024-12-16 13:38:10629parcourir

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

Conversion de la liste Java à la carte avec Java 8 Streams et Lambdas

Contexte :

La conversion d'une liste d'objets en carte est une tâche courante. Java 7 et versions antérieures nécessitent un codage impératif à l'aide d'une boucle for-each. Dans Java 8, l'utilisation de flux et de lambdas fournit une solution concise et élégante.

Solution Java 7 :

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;
}

Solution Java 8 sans goyave :

En tirant parti de la classe Collectors, la conversion peut être effectuée en un seul flux opération :

Map<String, Choice> result =
    choices.stream().collect(Collectors.toMap(Choice::getName,
                                              Function.identity()));

Ici, Choice::getName récupère la clé de nom et Function.identity() préserve la valeur.

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!

Déclaration:
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