Java 9 - Méthodes de fabrique de collections
Avec Java 9, de nouvelles méthodes de fabrique sont ajoutées aux interfaces List, Set et Map pour créer des instances immuables. Ces méthodes d'usine sont des méthodes d'usine de commodité pour créer une collection de manière moins verbeuse et concise.
Ancienne façon de créer des collections
Démo en directimport java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; public class Tester { public static void main(String []args) { Set<String> set = new HashSet<>(); set.add("A"); set.add("B"); set.add("C"); set = Collections.unmodifiableSet(set); System.out.println(set); List<String> list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("C"); list = Collections.unmodifiableList(list); System.out.println(list); Map<String, String> map = new HashMap<>(); map.put("A","Apple"); map.put("B","Boy"); map.put("C","Cat"); map = Collections.unmodifiableMap(map); System.out.println(map); } }
Sortie
Il imprimera la sortie suivante.
[A, B, C] [A, B, C] {A=Apple, B=Boy, C=Cat}
Nouvelles méthodes
Avec Java 9, les méthodes suivantes sont ajoutées aux interfaces List, Set et Map avec leurs homologues surchargés.
static <E> List<E> of(E e1, E e2, E e3); static <E> Set<E> of(E e1, E e2, E e3); static <K,V> Map<K,V> of(K k1, V v1, K k2, V v2, K k3, V v3); static <K,V> Map<K,V> ofEntries(Map.Entry<? extends K,? extends V>... entries)
Points à noter
-
Pour les interfaces List et Set, la méthode of(...) est surchargée pour avoir 0 à 10 paramètres et un avec le paramètre var args.
-
Pour l'interface Map, la méthode of(...) est surchargée pour avoir 0 à 10 paramètres.
-
En cas de plus de 10 paramètres pour l'interface Map, la méthode ofEntries(...) peut être utilisée en acceptant le paramètre var args.
Nouvelle façon de créer des collections
import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.AbstractMap; import java.util.Map; import java.util.Set; public class Tester { public static void main(String []args) { Set<String> set = Set.of("A", "B", "C"); System.out.println(set); List<String> list = List.of("A", "B", "C"); System.out.println(list); Map<String, String> map = Map.of("A","Apple","B","Boy","C","Cat"); System.out.println(map); Map<String, String> map1 = Map.ofEntries ( new AbstractMap.SimpleEntry<>("A","Apple"), new AbstractMap.SimpleEntry<>("B","Boy"), new AbstractMap.SimpleEntry<>("C","Cat")); System.out.println(map1); } }
Sortie
Il imprimera la sortie suivante.
[A, B, C] [A, B, C] {A=Apple, B=Boy, C=Cat} {A=Apple, B=Boy, C=Cat}
Java