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.
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]); }
Bien que cette approche fonctionne, elle peut être fastidieuse et verbeuse, en particulier pour les listes plus volumineuses.
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 :
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));
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.
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));
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.
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!