Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Cách khởi tạo Immutable Collections trong Java 9

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