Java 9 - Koleksiyon Fabrikası Yöntemleri

Java 9 ile, değişmez örnekler oluşturmak için List, Set ve Map arayüzlerine yeni fabrika yöntemleri eklenir. Bu fabrika yöntemleri, daha az ayrıntılı ve özlü bir şekilde bir koleksiyon oluşturmak için uygun fabrika yöntemleridir.

Koleksiyon oluşturmanın eski yolu

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

Çıktı

Aşağıdaki çıktıyı yazdıracaktır.

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

Yeni Yöntemler

Java 9 ile List, Set ve Map arayüzlerine aşırı yüklenmiş muadilleriyle birlikte aşağıdaki yöntemler eklenir.

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)

Dikkat Edilmesi Gereken Noktalar

  • List ve Set arabirimleri için, (...) yöntemi 0 ila 10 parametre ve biri var args parametresi olacak şekilde aşırı yüklenmiştir.

  • Harita arayüzü için, (...) yöntemi 0 ila 10 parametreye sahip olacak şekilde aşırı yüklenmiştir.

  • Harita arayüzü için 10'dan fazla parametre olması durumunda, var args parametresini kabul etmek için ofEntries (...) yöntemi kullanılabilir.

Koleksiyon oluşturmanın yeni yolu

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

Çıktı

Aşağıdaki çıktıyı yazdıracaktır.

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