亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java 9 集合工厂方法:一行代码创建不可变 List/Set/Map

痛点与解决

Java 8 创建不可变集合需“新建可变集合 → 添加元素 → Collections.unmodifiableXxx() 包装”三步,冗长且易错。Java 9 在 List、Set、Map 接口新增静态工厂方法,一行代码完成创建。

核心方法签名

// List & Set:0-10 个参数重载 + 可变参数重载
static  List of(E e1, E e2, ...)
static  List of(E... elements)

// Map:0-10 对键值对重载 + Map.Entry 可变参数
static  Map of(K k1, V v1, K k2, V v2, ...)
static  Map ofEntries(Map.Entry... entries)

关键特性

代码对比

Java 8 方式(冗长)

Set set = new HashSet<>();
set.add("A"); set.add("B"); set.add("C");
set = Collections.unmodifiableSet(set);

List list = new ArrayList<>();
list.add("A"); list.add("B"); list.add("C");
list = Collections.unmodifiableList(list);

Map map = new HashMap<>();
map.put("A","Apple"); map.put("B","Boy"); map.put("C","Cat");
map = Collections.unmodifiableMap(map);

Java 9 方式(简洁)

Set set = Set.of("A", "B", "C");
List list = List.of("A", "B", "C");
Map map = Map.of("A","Apple", "B","Boy", "C","Cat");

// 超过 10 对键值对使用 ofEntries
Map map1 = Map.ofEntries(
    new AbstractMap.SimpleEntry<>("A","Apple"),
    new AbstractMap.SimpleEntry<>("B","Boy"),
    new AbstractMap.SimpleEntry<>("C","Cat")
);

输出结果

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

进阶用法

何时不适用

java

  1. 精通 Java 运算符:类型、语法与实战示例
  2. Java 抽象类与抽象方法完全指南
  3. 精通 Java 接口:概念、实现与最佳实践
  4. 精通 Java Try-With-Resources:自动资源管理详解
  5. Java 注解详解:类型、放置位置与实战示例
  6. 掌握 Java 自动装箱与拆箱:实战示例与最佳实践
  7. Java String toLowerCase() 与 toUpperCase():区域感知的大小写转换
  8. Java 集合框架完全指南:接口、实现、算法与最佳实践
  9. Java 10 新增 70+ API 与特性详解
  10. Java 10 垃圾收集器接口与 G1 并行 Full GC
  11. Java 9 集合工厂方法:一行代码创建不可变 List/Set/Map
  12. Java 9 接口私有方法:增强封装与代码复用