Java 9 Métodos de fábrica de colecciones

Java 9 新特性Java 9 Nuevas características

En las interfaces List, Set y Map de Java 9, los nuevos métodos de fábrica estáticos pueden crear instancias inmutables de estas colecciones.

Estos métodos de fábrica pueden crear colecciones de una manera más concisa.

Método antiguo para crear colecciones

Ejemplo

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

El resultado de la ejecución es:

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

Nuevo método para crear colecciones

En Java 9, los siguientes métodos se añadieron a las interfaces List, Set y Map y a sus sobrecargas.

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)
  • En las interfaces List y Set, el método of(...) se sobrecarga con distintos métodos de 0 a 10 parámetros.

  • En la interfaz Map, el método of(...) se sobrecarga con métodos de 0 a 10 parámetros.

  • En la interfaz Map, si hay más de 10 parámetros, se puede utilizar el método ofEntries(...).

Nuevo método para crear colecciones

Ejemplo

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

El resultado de salida es:

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

Java 9 新特性Java 9 Nuevas características

Otras extensiones