Java 9 - Verzamelfabrieksmethoden
Met Java 9 worden nieuwe fabrieksmethoden toegevoegd aan de interfaces List, Set en Map om onveranderlijke instanties te creëren. Deze fabrieksmethoden zijn gemaksfabrieksmethoden om een verzameling op een minder uitgebreide en beknopte manier te maken.
Oude manier om collecties te maken
Live demoimport 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); } }
Uitvoer
Het zal de volgende uitvoer afdrukken.
[A, B, C] [A, B, C] {A=Apple, B=Boy, C=Cat}
Nieuwe methoden
Met java 9 worden de volgende methoden toegevoegd aan de lijst-, set- en kaartinterfaces, samen met hun overbelaste tegenhangers.
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)
Aandachtspunten
-
Voor List- en Set-interfaces is de methode van (...) overbelast om 0 tot 10 parameters te hebben en één met de parameter var args.
-
Voor de kaartinterface is de methode van (...) overbelast om 0 tot 10 parameters te hebben.
-
In het geval van meer dan 10 parameters voor de kaartinterface, kan de methode ofEntries(...) worden gebruikt door de parameter var args te accepteren.
Nieuwe manier om collecties te maken
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); } }
Uitvoer
Het zal de volgende uitvoer afdrukken.
[A, B, C] [A, B, C] {A=Apple, B=Boy, C=Cat} {A=Apple, B=Boy, C=Cat}
Java
- Java-operators
- Java abstracte klasse en abstracte methoden
- Java-interface
- Java proberen-met-bronnen
- Java-annotaties
- Java autoboxing en unboxing
- Java String toLowercase() en toUpperCase() methoden
- Java - Collecties Framework
- Java 10 - Nieuwe API's en opties
- Java 10 - Verbeterde afvalinzameling
- Java 9 - Verzamelfabrieksmethoden