Computer >> Máy Tính >  >> Lập trình >> Java

Làm cách nào chúng ta có thể tạo một Bản đồ không thể sửa đổi trong Java 9?

Bản đồ không thể sửa đổi là một trong những có chìa khóa giá trị không thể thêm , đã loại bỏ hoặc đã cập nhật khi một bản đồ không thể thay đổi được đã được tạo. Các phương thức của nhà máy tĩnh: Map.of () Map.ofEntries () từ Bản đồ cung cấp một cách thuận tiện để tạo bản đồ không thể sửa đổi trong Java 9 .

Một bản đồ được tạo bằng cách sử dụng Map.of () Map.ofEntries () các phương pháp có các đặc điểm sau.

  • Bản đồ được trả về bởi các phương thức gốc được quy ước là không thể thay đổi . Có nghĩa là các phím giá trị không thể thêm , đã loại bỏ hoặc đã cập nhật . Việc gọi bất kỳ phương thức đột biến nào trên bản đồ sẽ gây ra Ngoại lệ không được hỗ trợ .
  • Nếu chứa khóa / giá trị bản đồ tự có thể thay đổi , nó có thể khiến Bản đồ hoạt động trong quán y hoặc nội dung của nó có vẻ thay đổi.
  • Bản đồ bất biến không cho phép null phím giá trị . Nếu có bất kỳ nỗ lực nào để tạo bằng khóa hoặc giá trị rỗng, thì nó sẽ ném NullPointerException .
  • trùng lặp phím bị từ chối vào thời điểm tạo ra chính nó. Chuyển các khóa trùng lặp sang một phương pháp gốc tĩnh gây ra IllegalArgumentException .
  • Bất biến bản đồ có thể nối tiếp hóa nếu tất cả các khóa và giá trị đều có thể tuần tự hóa.
  • Thứ tự lặp lại của các ánh xạ không xác định và có thể thay đổi.

Cú pháp

Map.of(k1, v1, k2, v2)
Map.ofEntries(entry(k1, v1), entry(k2, v2),...)

Ví dụ về Map.of ()

import java.util.Map;
public class UnmodifiableMapTest {
   public static void main(String[] args) {
      Map<String, String> empMap = Map.of("101", "Raja", "102", "Adithya", "103", "Jai", "104", "Chaitanya");
      System.out.println("empMap - " + empMap);
      empMap.put("105", "Vamsi");      // throws UnsupportedOperationException
   }
}

Đầu ra

empMap - {104=Chaitanya, 103=Jai, 102=Adithya, 101=Raja}
Exception in thread "main" java.lang.UnsupportedOperationException
         at java.base/java.util.ImmutableCollections.uoe(Unknown Source)
         at java.base/java.util.ImmutableCollections$AbstractImmutableMap.put(Unknown Source)
         at UnmodifiableMapTest.main(UnmodifiableMapTest.java:7)


Ví dụ về Map.ofEntries ()

import java.util.Map;
import static java.util.Map.entry;
public class UnmodifidMapTest {
   public static void main(String[] args) {
      Map<String, String> empMap = Map.ofEntries(entry("101", "Raja"), entry("102", "Adithya"), entry("103", "Jai"), entry("104", "Chaitanya"));
      System.out.println("empMap - " + empMap);
   }
}

Đầu ra

empMap - {102=Adithya, 101=Raja, 104=Chaitanya, 103=Jai}