Java 9 - Metode Pabrik Pengumpulan

Dengan Java 9, metode pabrik baru ditambahkan ke antarmuka Daftar, Setel, dan Peta untuk membuat instance yang tidak dapat diubah. Metode pabrik ini adalah metode pabrik praktis untuk membuat koleksi dengan cara yang lebih singkat dan ringkas.

Cara lama untuk membuat koleksi

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);
   }
}

Keluaran

Ini akan mencetak keluaran berikut.

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

Metode Baru

Dengan java 9, metode berikut ditambahkan ke antarmuka Daftar, Set, dan Peta bersama dengan rekan-rekan mereka yang kelebihan beban.

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)

Poin yang Perlu Diperhatikan

  • Untuk antarmuka List dan Set, metode (...) kelebihan beban untuk memiliki 0 hingga 10 parameter dan satu dengan parameter var args.

  • Untuk antarmuka Peta, metode (...) dibebani untuk memiliki 0 hingga 10 parameter.

  • Dalam kasus lebih dari 10 parameter untuk antarmuka Map, metode ofEntries (...) dapat digunakan untuk menerima parameter var args.

Cara baru untuk membuat koleksi

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);
   }
}

Keluaran

Ini akan mencetak keluaran berikut.

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