Factory Methods สำหรับ Immutable Collections
Java 9 ให้ factory methods สร้าง immutable collections (list, set, map) ได้ทั้ง empty และ non-empty แทน Collections.unmodifiableXXX() เดิม
Initialization Patterns
Immutable List
// Empty
List<Integer> immutableEmptyList = List.of();
// Non-empty
List<String> immutableList = List.of("INDIA", "AUSTRALIA", "ENGLAND", "NEWZEALAND");
Immutable Set
// Empty
Set<Integer> immutableEmptySet = Set.of();
// Non-empty
Set<String> immutableSet = Set.of("INDIA", "AUSTRALIA", "ENGLAND", "NEWZEALAND");
Immutable Map
// Empty
Map<Integer, Integer> immutableEmptyMap = Map.of();
// Non-empty
Map<String, String> immutableMap = Map.of(
"INDIA", "India",
"AUSTRALIA", "Australia",
"ENGLAND", "England",
"NEWZEALAND", "Newzealand"
);
ตัวอย่างเปรียบเทียบ Java 8 vs Java 9
// Java 8
List<String> list8 = new ArrayList<>();
list8.add("INDIA"); ...
List<String> immutableList8 = Collections.unmodifiableList(list8);
// Java 9
List<String> immutableList = List.of("INDIA", "AUSTRALIA", "ENGLAND", "NEWZEALAND");
Output
INDIA AUSTRALIA ENGLAND NEWZEALAND ... AUSTRALIA : Australia ENGLAND : England NEWZEALAND : Newzealand INDIA : India
สรุป
Factory methods ใน Java 9 ทำให้สร้าง immutable collections ได้กระชับ อ่านง่าย และมีประสิทธิภาพมากกว่า Collections.unmodifiableXXX() เดิมมาก