Java教程

Java9 工厂方法

Java 9 Collection库包括用于List,Set和Map接口的静态工厂方法。这些方法对于创建少量集合很有用。
假设,如果要创建5个元素的列表,则需要编写以下代码。

Java列表示例

import java.util.ArrayList;
import java.util.List;
public class FactoryMethodsExample {
  public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("Java");
    list.add("JavaFX");
    list.add("Spring");
    list.add("Hibernate");
    list.add("JSP");
    for(String l : list){
      System.out.println(l);
    }
  }
}
输出:
Java
JavaFX
Spring
Hibernate
JSP
在上面的代码中,每个列表元素的添加方法都反复称为 ,而在Java 9中,我们可以使用工厂方法在单行代码中进行添加。

用于收集的工厂方法

工厂方法是静态类型的特殊类型,用于创建 不可修改的实例。这意味着我们可以使用这些方法来创建少量元素的列表,集合和映射。
它是不可修改的,因此添加新元素将抛出 java.lang.UnsupportedOperationException
每个接口都有其自己的工厂方法,我们将列出所有方法在下表中。

列表接口的工厂方法

修饰符 方法 说明
static <E> List<E> Of() 它返回一个包含零个元素的不可变列表。
static <E> List<E> of(E e1) 它返回一个包含一个元素的不可变列表。
static <E> List<E> of(E ... elements) 它返回一个包含任意数量元素的不可变列表。
static <E> List<E> of(E e1,E e2) 它返回一个包含两个元素的不可变列表。
static <E> List<E> of(E e1,E e2,E e3) 它返回一个包含三个元素的不可变列表。
static <E> List<E> of(E e1,E e2,E e3,E e4) 它返回一个包含四个元素的不可变列表。
static <E> List<E> of(E e1,E e2,E e3,E e4,E e5) 它返回一个包含五个元素的不可变列表。
static <E> List<E> of(E e1,E e2,E e3,E e4,E e5,E e6) 它返回一个包含六个元素的不可变列表。
static <E> List<E> of(E e1,E e2,E e3,E e4,E e5,E e6,E e7) 它返回一个包含七个元素的不可变列表。
static <E> List<E> of(E e1,E e2,E e3,E e4,E e5,E e6,E e7,E e8) 它返回一个包含八个元素的不可变列表。
static <E> List<E> of(E e1,E e2,E e3,E e4,E e5,E e6,E e7,E e8,E e9) 它返回一个包含九个元素的不可变列表。
static <E> List<E> of(E e1,E e2,E e3,E e4,E e5,E e6,E e7,E e8,E e9,E e10) 它返回一个包含十个元素的不可变列表。

Java 9列表工厂方法示例

在Java 9中,我们可以借助 List.of()工厂以各种简单的方式编写此代码。方法。
import java.util.List;
public class FactoryMethodsExample {
  public static void main(String[] args) {
    List<String> list = List.of("Java","JavaFX","Spring","Hibernate","JSP");
    for(String l:list) {
      System.out.println(l);
    }
  }
}
输出:
Java
JavaFX
Spring
Hibernate
JSP

Java 9 Set接口

Java Set接口提供了一个 Set.of()静态工厂方法,该方法用于创建不可变集合。用此方法创建的set实例具有以下特征。
这是一成不变的 没有空元素 如果所有元素均可序列化,则可序列化。 没有重复的元素。 集合元素的迭代顺序未指定,并且可能会发生变化。

Java 9 Set接口工厂方法

下表包含Set接口的工厂方法。
修饰符和类型 方法 说明
static<E> Set<E> of() 它返回一个包含零个元素的不可变集合。
static<E> Set<E> of(E e1) 它返回一个包含一个元素的不可变集合。
static<E> Set<E> of(E ... elements) 它返回一个包含任意数量元素的不可变集合。
static<E> Set<E> of(E e1,E e2) 它返回一个包含两个元素的不可变集合。
static<E> Set<E> of(E e1,E e2,E e3) 它返回一个包含三个元素的不可变集合。
static<E> Set<E> of(E e1,E e2,E e3,E e4) 它返回一个包含四个元素的不可变集合。
static<E> Set<E> of(E e1,E e2,E e3,E e4,E e5) 它返回一个包含五个元素的不可变集合。
static<E> Set<E> 它返回一个包含六个元素的不可变集合。
static<E> Set<E> of(E e1,E e2,E e3,E e4,E e5,E e6,E e7) 它返回一个包含七个元素的不可变集合。
static<E> Set<E> of(E e1,E e2,E e3,E e4,E e5,E e6,E e7,E e8) 它返回一个包含八个元素的不可变集合。
static<E> Set<E> of(E e1,E e2,E e3,E e4,E e5,E e6,E e7,E e8,E e9) 它返回一个包含九个元素的不可变集合。
static<E> Set<E> of(E e1,E e2,E e3,E e4,E e5,E e6,E e7,E e8,E e9,E e10) 它返回一个包含十个元素的不可变集合。

Java 9设置接口工厂方法示例

import java.util.Set;
public class FactoryMethodsExample {
  public static void main(String[] args) {
    Set<String> set = Set.of("Java","JavaFX","Spring","Hibernate","JSP");
    for(String l:set) {
      System.out.println(l);
    }
  }
}
输出:
Spring
JavaFX
JSP
Java
Hibernate

Java 9 Map Interface Factory方法

在Java 9中,Map包含Map.of()和Map.ofEntries()静态工厂方法,它们提供了一种方便的方法来creae不变的地图。
通过这些方法创建的地图具有以下特征。
这是一成不变的 不允许使用空键和空值 如果所有键和值都可以序列化,则可以序列化 它在创建时拒绝重复的密钥 映射的迭代顺序未指定,并且可能会发生变化。

Java 9 Map接口工厂方法

下表包含Map接口的工厂方法。
(t k,V v1,K k2,V v2,K k3,V v3,K k4,V v4,K k5,V v5,K k6,V v6,K k7,V v7,K k8, V v8) (t k,V v1,K k2,V v2,K k3,V v3,K k4,V v4,K k5,V v5,K k6,V v6,K k7,V v7,K k8, V v8,K k9,V v9) (t k,V v1,K k2,V v2,K k3,V v3,K k4,V v4,K k5,V v5,K k6,V v6,K k7,V v7,K k8, V v8,K k9,V v9,K k10,V v10)
修饰符和类型 方法 说明
static<K,V>Map<K,V> of() 它返回包含零个映射的不可变映射。
static<K,V>Map<K,V> of(K k1,V v1) 它返回一个包含单个映射的不可变映射。
static<K,V>Map<K,V> of(K k1,V v1,K k2,V v2) 它返回一个包含两个映射的不可变映射。
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> of(K k1,V v1,K k2,V v2,K k3,V v3,K k4,V v4) 它返回包含四个映射的不可变映射。
static<K,V>Map<K,V> of(K k1,V v1,K k2,V v2,K k3,V v3,K k4,V v4,K k5,V v5) 它返回包含五个映射的不可变映射。
static<K,V>Map<K,V> of(K k1,V v1,K k2,V v2,K k3,V v3,K k4,V v4,K k5,V v5,K k6,V v6) 它返回一个包含六个映射的不可变映射。
static<K,V>Map<K,V> of(K k1,V v1,K k2,V v2,K k3,V v3,K k4,V v4,K k5,V v5,K k6,V v6,K k7,V v7) 它返回一个包含七个映射的不可变映射。
static<K,V>Map<K,V> 它返回一个包含八个映射的不可变映射。
static<K,V>Map<K,V> 它返回一个包含九个映射的不可变映射。
static<K,V>Map<K,V> 它返回一个包含十个映射的不可变映射。
static<K,V>Map<K,V> ofEntries(Map.Entry <?扩展K ,?扩展V> ...条目) 它返回一个不变的映射,其中包含从给定条目中提取的键和值。

Java 9 Map Interface工厂方法示例

import java.util.Map;
public class FactoryMethodsExample {
  public static void main(String[] args) {
    Map<Integer,String> map = Map.of(101,"JavaFX",102,"Hibernate",103,"Spring MVC");
    for(Map.Entry<Integer, String> m : map.entrySet()){  
      System.out.println(m.getKey()+" "+m.getValue());
    }
  }
}
输出:
102 Hibernate
103 Spring MVC
101 JavaFX

Java 9 Map接口的Entries()方法示例

在Java 9中,除了static Map.of()方法之外,Map接口包括另一种静态方法 Map.ofEntries()。此方法用于创建 Map.Entry 实例的地图。
在以下示例中,我们将在多个map.entry实例的帮助下创建地图实例。
import java.util.Map;
public class FactoryMethodsExample {
  public static void main(String[] args) {
    // Creating Map Entry
    Map.Entry<Integer, String> e1 = Map.entry(101, "Java");
    Map.Entry<Integer, String> e2 = Map.entry(102, "Spring");
    // Creating Map using map entries
    Map<Integer, String> map = Map.ofEntries(e1,e2);
    // Iterating Map 
    for(Map.Entry<Integer, String> m : map.entrySet()){  
      System.out.println(m.getKey()+" "+m.getValue());
    }
  }
}
输出:
102 Spring
101 Java

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4