Java 9 : Méthodes factory de collections — List, Set, Map immuables simplifiés
Java 9 ajoute des méthodes factory statiques aux interfaces List, Set, Map pour créer des instances immuables de façon concise.
Ancienne méthode (verbose)
Set<String> set = new HashSet<>();
set.add("A"); set.add("B"); set.add("C");
set = Collections.unmodifiableSet(set);
List<String> list = new ArrayList<>();
list.add("A"); list.add("B"); list.add("C");
list = Collections.unmodifiableList(list);
Map<String, String> map = new HashMap<>();
map.put("A","Apple"); map.put("B","Boy"); map.put("C","Cat");
map = Collections.unmodifiableMap(map);
Nouvelles méthodes (Java 9+)
static <E> List<E> of(E... elements)
static <E> Set<E> of(E... elements)
static <K,V> Map<K,V> of(K k1, V v1, K k2, V v2, ...)
static <K,V> Map<K,V> ofEntries(Map.Entry<? extends K,? extends V>... entries)
Surcharges
List.of()/Set.of(): 0 à 10 paramètres + varargs.Map.of(): 0 à 10 paires clé-valeur.- Au-delà :
Map.ofEntries()avec varargs d'Map.Entry.
Nouvelle méthode concise
Set<String> set = Set.of("A", "B", "C");
List<String> list = List.of("A", "B", "C");
Map<String, String> map = Map.of("A","Apple", "B","Boy", "C","Cat");
Map<String, String> map1 = Map.ofEntries(
new AbstractMap.SimpleEntry<>("A","Apple"),
new AbstractMap.SimpleEntry<>("B","Boy"),
new AbstractMap.SimpleEntry<>("C","Cat")
);
Sortie
[A, B, C]
[A, B, C]
{A=Apple, B=Boy, C=Cat}
{A=Apple, B=Boy, C=Cat}
Avantages : immuables par défaut, thread-safe, compacts en mémoire, lisibles, pas de Collections.unmodifiableXxx() nécessaire.
Attention : tentative de modification → UnsupportedOperationException.
Java
- Maîtriser les opérateurs Java : Types, syntaxe et exemples pratiques
- Classes et méthodes abstraites en Java : guide complet
- Maîtriser les interfaces Java : concepts, implémentation et bonnes pratiques
- Maîtriser le try-with-resources Java : gestion automatique des ressources expliquée
- Annotations Java expliquées : types, placement et exemples pratiques
- Maîtriser l'autoboxing et l'unboxing Java : Exemples pratiques et bonnes pratiques
- Java String toLowerCase() & toUpperCase() : Convertir la casse du texte avec prise en compte des locales
- Maîtriser les Collections Java : Guide complet des structures de données efficaces
- Java 10 : 70+ nouvelles API et fonctionnalités expliquées