Java Language Construire des collections à partir de données existantes


Exemple

Collections standard

Framework Java Collections

Un moyen simple de construire une List partir de valeurs de données individuelles consiste à utiliser la méthode java.utils.Arrays Arrays.asList :

List<String> data = Arrays.asList("ab", "bc", "cd", "ab", "bc", "cd");

Toutes les implémentations de collection standard fournissent des constructeurs qui prennent une autre collection comme argument en ajoutant tous les éléments à la nouvelle collection au moment de la construction:

List<String> list = new ArrayList<>(data); // will add data as is
Set<String> set1 = new HashSet<>(data); // will add data keeping only unique values
SortedSet<String> set2 = new TreeSet<>(data); // will add data keeping unique values and sorting
Set<String> set3 = new LinkedHashSet<>(data); // will add data keeping only unique values and preserving the original order

Cadre des collections Google Goyave

Un autre excellent Google Guava est Google Guava , une classe d'utilitaires étonnante (fournissant des méthodes statiques pratiques) pour la construction de différents types de collections standard: Lists et Sets :

 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 ...
 List<String> list1 = Lists.newArrayList("ab", "bc", "cd");
 List<String> list2 = Lists.newArrayList(data);
 Set<String> set4 = Sets.newHashSet(data);
 SortedSet<String> set5 = Sets.newTreeSet("bc", "cd", "ab", "bc", "cd");

Collections de cartographie

Framework Java Collections

De même pour les cartes, si une Map<String, Object> map une nouvelle carte peut être construite avec tous les éléments comme suit:

Map<String, Object> map1 = new HashMap<>(map);
SortedMap<String, Object> map2 = new TreeMap<>(map);

Cadre Apache Commons Collections

En utilisant Apache Commons vous pouvez créer Map en utilisant array dans ArrayUtils.toMap ainsi que MapUtils.toMap :

 import org.apache.commons.lang3.ArrayUtils;
 ...
 // Taken from org.apache.commons.lang.ArrayUtils#toMap JavaDoc

 // Create a Map mapping colors.
 Map colorMap = MapUtils.toMap(new String[][] {{
     {"RED", "#FF0000"},
     {"GREEN", "#00FF00"},
     {"BLUE", "#0000FF"}});

Chaque élément du tableau doit être un Map.Entry ou un Array, contenant au moins deux éléments, le premier élément étant utilisé comme clé et le second comme valeur.

Cadre des collections Google Goyave

La classe d'utilitaires du framework Google Guava est nommée Maps :

 import com.google.common.collect.Maps;
 ...
 void howToCreateMapsMethod(Function<? super K,V> valueFunction,
           Iterable<K> keys1, 
           Set<K> keys2, 
           SortedSet<K> keys3) {
     ImmutableMap<K, V> map1 = toMap(keys1, valueFunction); // Immutable copy
     Map<K, V> map2 = asMap(keys2, valueFunction); // Live Map view
     SortedMap<K, V> map3 = toMap(keys3, valueFunction); // Live Map view
 }
Java SE 8

Utiliser Stream ,

Stream.of("xyz", "abc").collect(Collectors.toList());

ou

Arrays.stream("xyz", "abc").collect(Collectors.toList());