Maison > Java > javaDidacticiel > Comment convertir efficacement une liste en carte en Java ?

Comment convertir efficacement une liste en carte en Java ?

Patricia Arquette
Libérer: 2024-11-28 11:52:11
original
707 Les gens l'ont consulté

How to Efficiently Convert a List to a Map in Java?

Conversion d'une liste en carte en Java : approches optimales

L'approche optimale pour convertir une liste en carte en Java dépend de divers facteurs, y compris la version Java et les exigences spécifiques du cas d'utilisation.

Pré-Java 8 Approche

Avant Java 8, la méthode courante pour convertir une liste en carte impliquait d'itérer sur les éléments de la liste et de remplir manuellement la carte. Bien que simple, cette approche peut s'avérer inefficace et sujette aux erreurs pour les grands ensembles de données.

Un exemple de l'approche pré-Java 8 :

List<Object[]> results;
Map<Integer, String> resultsMap = new HashMap<>();
for (Object[] o : results) {
    resultsMap.put((Integer) o[0], (String) o[1]);
}
Copier après la connexion

API Java 8 Streams

Avec Java 8, l'API Streams a introduit une approche plus concise et efficace pour convertir une liste en carte. En utilisant les streams et la classe Collectors, vous pouvez réaliser cette conversion en une seule ligne de code :

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

Cette approche offre plusieurs avantages :

  • Lisibilité améliorée : Le fonctionnement du flux est plus concis et plus facile à comprendre que la version pré-Java 8 approche.
  • Efficacité : Les flux fournissent un mécanisme de traitement parallèle, qui peut améliorer considérablement les performances des grands ensembles de données.
  • Sécurité des types : Vérification de type est appliqué par le compilateur Java, réduisant ainsi le risque d'erreurs.

Gestion des doublons Clés

Si votre fonction de cartographie peut produire des clés en double, vous pouvez rencontrer une erreur lors de l'utilisation du collecteur toMap. Pour gérer cette situation, vous pouvez spécifier un opérateur binaire pour fusionner les valeurs en double :

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

Dans cet exemple, l'opérateur binaire est Integer::sum, qui résume les valeurs associées aux clés en double.

Conclusion

L'approche optimale pour convertir une liste en carte en Java dépend de la version Java et des exigences spécifiques de votre cas d'utilisation. Pour Java 8 et versions ultérieures, l'utilisation de l'API Streams est fortement recommandée en raison de son efficacité, de sa concision et de la sécurité de ses types.

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