Java Language Costruire collezioni da dati esistenti


Esempio

Collezioni standard

Quadro di collezioni Java

Un modo semplice per costruire un List dai singoli valori di dati è utilizzare il metodo java.utils.Arrays Arrays.asList :

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

Tutte le implementazioni di raccolta standard forniscono costruttori che accettano un'altra raccolta come argomento aggiungendo tutti gli elementi alla nuova raccolta al momento della costruzione:

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

Framework Google Guava Collections

Un altro grande quadro è Google Guava che è straordinaria classe di utilità (fornisce metodi statici di convenienza) per la costruzione di diversi tipi di collezioni standard di Lists e 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");

Raccolta di mappe

Quadro di collezioni Java

Allo stesso modo per le mappe, data una Map<String, Object> map una nuova mappa può essere costruita con tutti gli elementi come segue:

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

Quadro delle collezioni Apache Commons

Usando Apache Commons puoi creare una mappa usando una matrice in ArrayUtils.toMap e 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"}});

Ogni elemento dell'array deve essere un Map.Entry o una Array, contenente almeno due elementi, in cui il primo elemento viene utilizzato come chiave e il secondo come valore.

Framework Google Guava Collections

La classe di utilità del framework Google Guava si chiama 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

Utilizzando Stream ,

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

o

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