Java 9 - Phương thức của nhà máy sưu tập

Với Java 9, các phương thức gốc mới được thêm vào các giao diện List, Set và Map để tạo ra các thể hiện bất biến. Các phương pháp nhà máy này là các phương pháp nhà máy tiện lợi để tạo ra một bộ sưu tập ít dài dòng và ngắn gọn.

Cách cũ để tạo bộ sưu tập

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class Tester {
   public static void main(String []args) {
      Set<String> set = new HashSet<>();
      set.add("A");
      set.add("B");
      set.add("C");
      set = Collections.unmodifiableSet(set);
      System.out.println(set);
      List<String> list = new ArrayList<>();

      list.add("A");
      list.add("B");
      list.add("C");
      list = Collections.unmodifiableList(list);
      System.out.println(list);
      Map<String, String> map = new HashMap<>();

      map.put("A","Apple");
      map.put("B","Boy");
      map.put("C","Cat");
      map = Collections.unmodifiableMap(map);
      System.out.println(map);
   }
}

Đầu ra

Nó sẽ in kết quả sau.

[A, B, C]
[A, B, C]
{A=Apple, B=Boy, C=Cat}

Phương pháp mới

Với java 9, các phương thức sau được thêm vào các giao diện Danh sách, Đặt và Bản đồ cùng với các đối tác quá tải của chúng.

static <E> List<E> of(E e1, E e2, E e3);
static <E> Set<E>  of(E e1, E e2, E e3);
static <K,V> Map<K,V> of(K k1, V v1, K k2, V v2, K k3, V v3);
static <K,V> Map<K,V> ofEntries(Map.Entry<? extends K,? extends V>... entries)

Điểm cần lưu ý

  • Đối với giao diện List và Set, phương thức of (...) được nạp chồng để có từ 0 đến 10 tham số và một với tham số var args.

  • Đối với giao diện Bản đồ, phương thức of (...) được nạp chồng để có từ 0 đến 10 tham số.

  • Trong trường hợp có hơn 10 tham số cho giao diện Bản đồ, phương thức ofEntries (...) có thể được sử dụng chấp nhận tham số var args.

Cách mới để tạo bộ sưu tập

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.AbstractMap;
import java.util.Map;
import java.util.Set;

public class Tester {

   public static void main(String []args) {
      Set<String> set = Set.of("A", "B", "C");      
      System.out.println(set);
      List<String> list = List.of("A", "B", "C");
      System.out.println(list);
      Map<String, String> map = Map.of("A","Apple","B","Boy","C","Cat");
      System.out.println(map);
  
      Map<String, String> map1 = Map.ofEntries (
         new AbstractMap.SimpleEntry<>("A","Apple"),
         new AbstractMap.SimpleEntry<>("B","Boy"),
         new AbstractMap.SimpleEntry<>("C","Cat"));
      System.out.println(map1);
   }
}

Đầu ra

Nó sẽ in kết quả sau.

[A, B, C]
[A, B, C]
{A=Apple, B=Boy, C=Cat}
{A=Apple, B=Boy, C=Cat}