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

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

Linda Hamilton
Libérer: 2024-11-30 02:26:13
original
485 Les gens l'ont consulté

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

Conversion d'une liste en carte

Lorsque vous traitez des structures de données en Java, la conversion d'une liste en carte peut être une transformation courante. Il existe plusieurs façons de réaliser cette conversion, et l'approche optimale dépend des exigences spécifiques et de la version Java utilisée.

Approche traditionnelle

L'approche traditionnelle pour convertir une liste en carte impliquait une itération manuelle à travers la liste et en attribuant des valeurs à une carte. Par exemple :

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

Bien que cette approche fonctionne, elle peut être fastidieuse et verbeuse, en particulier pour les listes plus volumineuses.

Approche Java 8 Stream

Avec Java 8, le L'API Streams offre un moyen plus concis et efficace de convertir des listes en cartes. La classe Collectors propose plusieurs méthodes qui simplifient les manipulations de données, notamment toMap(). Cette méthode accepte deux arguments :

  • Une fonction de mapping pour définir les clés de la carte.
  • Une fonction de mapping pour définir les valeurs de la carte.

Vous pouvez utiliser toMap() comme suit :

List<Item> list = IntStream.rangeClosed(1, 4)
    .mapToObj(Item::new)
    .collect(Collectors.toList()); // [Item [i=1], Item [i=2], Item [i=3], Item [i=4]]

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

Dans cet exemple, la fonction de mappage de touches est Item::getKey, et la fonction de mappage de valeurs la fonction est l'élément -> item.

Utilisation avec des opérateurs binaires

La méthode toMap() peut également prendre un troisième argument, un opérateur binaire, qui est utilisé pour combiner des valeurs lorsqu'il y a des clés en double :

List<Integer> intList = Arrays.asList(1, 2, 3, 4, 5, 6);
Map<String, Integer> map = intList.stream()
    .collect(toMap(i -> String.valueOf(i % 3), i -> i, Integer::sum));
Copier après la connexion

Dans ce cas, l'opérateur binaire est Integer::sum, qui ajoute les valeurs des clés en double. Le résultat est une carte où les clés sont les restes lors de la division par 3 et les valeurs sont les sommes des valeurs d'origine.

Conclusion

La meilleure approche pour convertir une liste en carte dans Java dépend des exigences spécifiques et de la version Java utilisée. Pour les conversions traditionnelles, des boucles manuelles peuvent être utilisées. Pour des conversions plus efficaces et concises, notamment dans Java 8 et versions ultérieures, l'API Streams et la méthode Collectors.toMap() constituent une alternative puissante.

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