Java 9 cung cấp phương thức factory để tạo immutable lists, sets và maps. Có thể dùng để tạo đối tượng collection rỗng (empty) hoặc không rỗng (non-empty). Trong Java 8 và trước, dùng phương thức tiện ích collection class như unmodifiableXXX để tạo immutable collection. Nếu cần immutable list thì dùng Collections.unmodifiableList().
Các factory methods cho phép khởi tạo dễ dàng immutable collections चाहे rỗng hay không rỗng.
Khởi tạo immutable list:
List<Integer> immutableEmptyList = List.of();
Khởi tạo list rỗng, immutable.
Khởi tạo immutable set:
Set<Integer> immutableEmptySet = Set.of();
Khởi tạo set rỗng, immutable.
Khởi tạo immutable map:
Map<Integer, Integer> immutableEmptyMap = Map.of();
Khởi tạo map rỗng, immutable.
Ví dụ so sánh Java 8 và Java 9
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class ImmutableCollectionTest {
public static void main(String args[]) {
// Java 8 style
List<String> list8 = new ArrayList<String>();
list8.add("INDIA");
list8.add("AUSTRALIA");
list8.add("ENGLAND");
list8.add("NEWZEALAND");
List<String> immutableList8 = Collections.unmodifiableList(list8);
immutableList8.forEach(System.out::println);
System.out.println();
// Java 9 style
List<String> immutableList = List.of("INDIA", "AUSTRALIA", "ENGLAND", "NEWZEALAND");
immutableList.forEach(System.out::println);
System.out.println();
Set<String> immutableSet = Set.of("INDIA", "AUSTRALIA", "ENGLAND", "NEWZEALAND");
immutableSet.forEach(System.out::println);
System.out.println();
Map<String, String> immutableMap = Map.of("INDIA", "India", "AUSTRALIA", "Australia", "ENGLAND", "England", "NEWZEALAND", "Newzealand");
immutableMap.forEach((key, value) -> System.out.println(key + " : " + value));
System.out.println();
}
}
Kết quả
INDIA AUSTRALIA ENGLAND NEWZEALAND INDIA AUSTRALIA ENGLAND NEWZEALAND AUSTRALIA ENGLAND NEWZEALAND INDIA AUSTRALIA : Australia ENGLAND : England NEWZEALAND : Newzealand INDIA : India