84 votes

Quelle est la meilleure façon de combiner deux listes dans une carte (Java) ?

Il serait bon d'utiliser for (String item: list), mais il ne sera itéré qu'à travers une liste, et vous auriez besoin d'un itérateur explicite pour l'autre liste. Ou, vous pourriez utiliser un itérateur explicite pour les deux.

Voici un exemple du problème, et une solution utilisant une boucle indexée for la place :

import java.util.*;
public class ListsToMap {
  static public void main(String[] args) {
    List<String> names = Arrays.asList("apple,orange,pear".split(","));
    List<String> things = Arrays.asList("123,456,789".split(","));
    Map<String,String> map = new LinkedHashMap<String,String>();  // ordered

    for (int i=0; i<names.size(); i++) {
      map.put(names.get(i), things.get(i));    // is there a clearer way?
    }

    System.out.println(map);
  }
}

Sortie :

{apple=123, orange=456, pear=789}

Y a-t-il un moyen plus clair ? Peut-être dans les collections API quelque part ?

20voto

Michael Borgwardt Points 181658

Puisque la relation clé-valeur est implicite via l'index de liste, je pense que la solution for-loop qui utilise explicitement l'index de liste est en fait assez claire - et courte aussi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X