Trong Java 9, một số phương thức factory được thêm vào Collections API. Sử dụng các phương thức factory này, có thể tạo đối tượng collection list, set và map không thể sửa đổi (unmodifiable) để giảm số dòng mã. List.of(), Set.of(), Map.of() và Map.ofEntries() là các phương thức factory tĩnh cung cấp cách thuận tiện tạo immutable collections (bộ sưu tập bất biến) trong Java 9.
Lợi ích của Immutable Collections:
- Ít không gian heap hơn: Không gian lưu trữ dữ liệu collection rất ít so với cách truyền thống ở các phiên bản Java trước.
- Truy cập dữ liệu nhanh hơn: Chi phí lưu trữ và wrap vào Collections.unmodifiable giảm xuống, truy cập dữ liệu nhanh hơn. Tăng hiệu suất tổng thể chương trình.
- An toàn luồng (Thread safety): Immutable collections tự nhiên thread-safe. Tất cả luồng luôn có cùng cái nhìn về dữ liệu gốc.
Cú pháp
List.of(elements...) Set.of(elements...) Map.of(k1, v1, k2, v2)
Ví dụ
import java.util.Set;
import java.util.List;
import java.util.Map;
public class ImmutableCollectionsTest {
public static void main(String args[]) {
List<String> stringList = List.of("a", "b", "c");
System.out.println("List values: " + stringList);
Set<String> stringSet = Set.of("a", "b", "c");
System.out.println("Set values: " + stringSet);
Map<String, Integer> stringMap = Map.of("a", 1, "b", 2, "c", 3);
System.out.println("Map values: " + stringMap);
}
}
Kết quả
List values: [a, b, c]
Set values: [a, b, c]
Map values: {a=1, b=2, c=3}