Java 9 Collection Factory Methods: Sederhanakan Pembuatan List, Set, dan Map Imutable
Dengan Java 9, metode pabrik baru ditambahkan ke antarmuka List, Set, dan Map untuk membuat instance imutable. Metode pabrik ini adalah metode pabrik kenyamanan untuk membuat koleksi dengan cara yang kurang bertele-tele dan ringkas.
Cara lama membuat koleksi
Live Demo
import 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); } } Output
Ini akan mencetak output berikut.
[A, B, C] [A, B, C] {A=Apple, B=Boy, C=Cat} Metode Baru
Dengan Java 9, metode berikut ditambahkan ke antarmuka List, Set, dan Map bersama dengan versi overload-nya.
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)
Hal yang Perlu Diperhatikan
Untuk antarmuka List dan Set, metode of(...) di-overload untuk memiliki 0 hingga 10 parameter dan satu dengan parameter var args.
Untuk antarmuka Map, metode of(...) di-overload untuk memiliki 0 hingga 10 parameter.
Dalam kasus lebih dari 10 parameter untuk antarmuka Map, metode ofEntries(...) dapat digunakan yang menerima parameter var args.
Cara baru membuat koleksi
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); } } Output
Ini akan mencetak output berikut.
[A, B, C] [A, B, C] {A=Apple, B=Boy, C=Cat} {A=Apple, B=Boy, C=Cat}