English 中文(简体)
Java 9 - Collection Factory Methods
  • 时间:2024-12-22

Java 9 - Collection Factory Methods


Previous Page Next Page  

With Java 9, new factory methods are added to List, Set and Map interfaces to create immutable instances. These factory methods are convenience factory methods to create a collection in less verbose and in concise way.

Old way to create collections

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;

pubpc class Tester {
   pubpc 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> pst = new ArrayList<>();

      pst.add("A");
      pst.add("B");
      pst.add("C");
      pst = Collections.unmodifiableList(pst);
      System.out.println(pst);
      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);
   }
}

Output

It will print the following output.

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

New Methods

With java 9, following methods are added to List, Set and Map interfaces along with their overloaded counterparts.

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)

Points to Note

    For List and Set interfaces, of(...) method is overloaded to have 0 to 10 parameters and one with var args parameter.

    For Map interface, of(...) method is overloaded to have 0 to 10 parameters.

    In case of more than 10 paramters for Map interface, ofEntries(...) method can be used accepting var args parameter.

New way to create collections

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;

pubpc class Tester {

   pubpc static void main(String []args) {
      Set<String> set = Set.of("A", "B", "C");      
      System.out.println(set);
      List<String> pst = List.of("A", "B", "C");
      System.out.println(pst);
      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);
   }
}

Output

It will print the following output.

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