Comment convertir une liste en carte en Java : approches optimales
La conversion d'une liste en carte en Java est une tâche courante qui peut être réalisé de différentes manières. Une approche consiste à parcourir la liste et à remplir une carte manuellement. Cependant, il existe des méthodes plus efficaces pour effectuer cette conversion à l'aide de la fonctionnalité Java intégrée.
Approche basée sur les flux (Java 8 ou version ultérieure)
Avec Java 8, l'API Stream fournit un moyen concis et performant de convertir une liste en carte. Cette approche utilise la méthode Collectors.toMap() :
Map<Integer, String> map = list.stream().collect(Collectors.toMap(Item::getKey, item -> item));
Ici, la fonction lambda Item::getKey récupère la clé de chaque élément de la liste, tandis que l'élément -> item lambda récupère la valeur.
Approche manuelle à l'aide d'une boucle
Pour les versions pré-Java 8 ou si le streaming ne convient pas, une approche manuelle peut être utilisée :
List<Object[]> results; Map<Integer, String> resultsMap = new HashMap<>(); for (Object[] o : results) { resultsMap.put((Integer) o[0], (String) o[1]); }
Cette approche implique de parcourir la liste et d'extraire manuellement les paires clé et valeur, ce qui peut être moins efficace que l'approche basée sur le flux. approche.
Utilisation d'un opérateur binaire pour les fonctions non bijectives
Si la fonction de mappage n'est pas bijective (c'est-à-dire que plusieurs valeurs peuvent correspondre à la même clé), une L'opérateur binaire peut être utilisé pour fusionner les valeurs de clé en double. Par exemple, si nous voulons trouver la somme des valeurs pour chaque clé unique :
Map<String, Integer> map = intList.stream().collect(toMap(i -> String.valueOf(i % 3), i -> i, Integer::sum));
Ici, l'opérateur binaire Integer::sum fournit la logique de fusion des valeurs de clé en double.
Conclusion
Bien que l'approche optimale pour convertir une liste en carte dépende des exigences spécifiques, l'utilisation de l'API Stream avec Collectors.toMap() est recommandé pour son efficacité et sa concision. L'approche manuelle peut être utilisée dans les anciennes versions de Java ou lorsque le streaming n'est pas applicable.
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!