本文概述
- 工厂收集方法
- Java 9列表工厂方法示例
- Java 9 Set接口
- Java 9 Set接口工厂方法
- Java 9 Map Interface工厂方法
- Java 9 Map Interface工厂方法
- Java 9 Map Interface Factory方法示例
- Java 9 Map Interface ofEntries()方法示例
假设, 如果要创建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);
} }}
输出:
JavaJavaFXSpringHibernateJSP
在上面的代码中, 为每个列表元素重复调用add方法, 而在Java 9中, 我们可以使用工厂方法在单行代码中进行添加方法。
工厂收集方法工厂方法是静态方法的一种特殊类型, 用于创建集合的不可修改实例。这意味着我们可以使用这些方法来创建少量元素的列表, 集合和映射。
【Java 9工厂方法】它是不可修改的, 因此添加新元素将引发java.lang.UnsupportedOperationException
每个接口都有其自己的工厂方法, 下表中列出了所有方法。
列表界面的工厂方法
修饰符 | 方法 | 描述 |
---|---|---|
静态< E> 列表< E> | Of() | 它返回一个包含零个元素的不可变列表。 |
静态< E> 列表< E> | of(E e1) | 它返回一个包含一个元素的不可变列表。 |
静态< E> 列表< E> | of(E… elements) | 它返回一个包含任意数量元素的不可变列表。 |
静态< E> 列表< E> | of(E e1, E e2) | 它返回一个包含两个元素的不可变列表。 |
静态< E> 列表< E> | of(E e1, E e2, E e3) | 它返回一个包含三个元素的不可变列表。 |
静态< E> 列表< E> | of(E e1, E e2, E e3, E e4) | 它返回一个包含四个元素的不可变列表。 |
静态< E> 列表< E> | of(E e1, E e2, E e3, E e4, E e5) | 它返回一个包含五个元素的不可变列表。 |
静态< E> 列表< E> | of(E e1, E e2, E e3, E e4, E e5, E e6) | 它返回一个包含六个元素的不可变列表。 |
静态< E> 列表< E> | of(E e1, E e2, E e3, E e4, E e5, E e6, E e7) | 它返回一个包含七个元素的不可变列表。 |
静态< E> 列表< E> | of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8) | 它返回一个包含八个元素的不可变列表。 |
静态< E> 列表< E> | of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9) | 它返回一个包含九个元素的不可变列表。 |
静态< E> 列表< E> | of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9, E e10) | 它返回一个包含十个元素的不可变列表。 |
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);
} }}
输出:
JavaJavaFXSpringHibernateJSP
Java 9 Set接口Java Set接口提供了一个Set.of()静态工厂方法, 该方法用于创建不可变的集合。用此方法创建的set实例具有以下特征。
- 这是一成不变的
- 没有空元素
- 如果所有元素都是可序列化的, 则它是可序列化的。
- 没有重复的元素。
- set元素的迭代顺序未指定, 可能会发生变化。
修饰符和类型 | 方法 | 描述 |
---|---|---|
静态< E> 设置< E> | of() | 它返回一个包含零个元素的不可变集合。 |
静态< E> 设置< E> | of(E e1) | 它返回一个包含一个元素的不可变集合。 |
静态< E> 设置< E> | of(E… elements) | 它返回一个包含任意数量元素的不可变集合。 |
静态< E> 设置< E> | of(E e1, E e2) | 它返回一个包含两个元素的不可变集合。 |
静态< E> 设置< E> | of(E e1, E e2, E e3) | 它返回一个包含三个元素的不可变集合。 |
静态< E> 设置< E> | of(E e1, E e2, E e3, E e4) | 它返回一个包含四个元素的不可变集合。 |
静态< E> 设置< E> | of(E e1, E e2, E e3, E e4, E e5) | 它返回一个包含五个元素的不可变集合。 |
静态< E> 设置< E> | 它返回一个包含六个元素的不可变集合。 | |
静态< E> 设置< E> | of(E e1, E e2, E e3, E e4, E e5, E e6, E e7) | 它返回一个包含七个元素的不可变集合。 |
静态< E> 设置< E> | of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8) | 它返回一个包含八个元素的不可变集合。 |
静态< E> 设置< E> | of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9) | 它返回一个包含九个元素的不可变集合。 |
静态< E> 设置< E> | of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9, E e10) | 它返回一个包含十个元素的不可变集合。 |
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);
} }}
输出:
SpringJavaFXJSPJavaHibernate
Java 9 Map Interface工厂方法在Java 9中, Map包含Map.of()和Map.ofEntries()静态工厂方法, 这些方法提供了创建不可变地图的便捷方法。
这些方法创建的地图具有以下特征。
- 这是一成不变的
- 它不允许空键和值
- 如果所有键和值都可序列化, 则可序列化
- 它在创建时拒绝重复的密钥
- 映射的迭代顺序不确定, 可能会发生变化。
修饰符和类型 | 方法 | 描述 |
---|---|---|
静态< K, V> 映射< K, V> | of() | 它返回一个包含零映射的不可变映射。 |
静态< K, V> 映射< K, V> | of(K k1, V v1) | 它返回一个包含单个映射的不可变映射。 |
静态< K, V> 映射< K, V> | of(K k1, V v1, K k2, V v2) | 它返回一个包含两个映射的不可变映射。 |
静态< K, V> 映射< K, V> | of(K k1, V v1, K k2, V v2, K k3, V v3) | 它返回一个包含三个映射的不可变映射。 |
静态< K, V> 映射< K, V> | of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4) | 它返回一个包含四个映射的不可变映射。 |
静态< K, V> 映射< K, V> | of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5) | 它返回一个包含五个映射的不可变映射。 |
静态< K, V> 映射< 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, V> 映射< 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) | 它返回一个包含七个映射的不可变映射。 |
静态< K, V> 映射< 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, K k8, V v8) | 它返回一个包含八个映射的不可变映射。 |
静态< K, V> 映射< 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, K k8, V v8, K k9, V v9) | 它返回一个包含九个映射的不可变映射。 |
静态< K, V> 映射< 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, K k8, V v8, K k9, V v9, K k10, V v10) | 它返回一个包含十个映射的不可变映射。 |
静态< K, V> 映射< K, V> | ofEntries(Map.Entry < ?扩展K , ?扩展V> … 条目) | 它返回一个不变的映射, 其中包含从给定条目中提取的键和值。 |
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 Hibernate103 Spring MVC101 JavaFX
Java 9 Map Interface ofEntries()方法示例在Java 9中, 除了静态Map.of()方法之外, Map接口还包含一个静态方法Map.ofEntries()。此方法用于创建Map.Entry实例的地图。
在以下示例中, 我们将在多个map.entry实例的帮助下创建地图实例。
import java.util.Map;
public class FactoryMethodsExample { public static void main(String[] args) {// Creating Map EntryMap.Entry<
Integer, String>
e1 = Map.entry(101, "Java");
Map.Entry<
Integer, String>
e2 = Map.entry(102, "Spring");
// Creating Map using map entriesMap<
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 Spring101 Java
推荐阅读
- Java 9控制面板
- Linux|在 Linux 上部署javaWeb项目+图文详解
- 操作系统|java web项目在linux部署、启动,查看系统配置常用的linux命令总结
- spring|《java版Spring Cloud分布式微服务电商》- 项目简介
- java|Linux常用命令 + Web程序部署
- poj 6206 Apple
- 使用VUE模仿BOSS直聘APP
- Android Processes and Threads
- Android开发之蓝牙连接打印机