当前位置: 首页 > news >正文

240. Java 集合 - 使用集合工厂方法创建和处理数据

文章目录

  • 240. Java 集合 - 使用集合工厂方法创建和处理数据
      • 🛠 创建不可变集合
        • 示例:使用工厂方法创建不可变集合
      • 📄 获取集合的不可变副本
        • 示例:创建不可变副本
      • 🔄 将数组包装为 List
        • 示例:使用 `Arrays.asList()` 包装数组
      • 🎯 小结

240. Java 集合 - 使用集合工厂方法创建和处理数据

🛠 创建不可变集合

Java SE 9 引入了一组工厂方法,用于创建不可变的 ListSet 集合。通过调用 List.of()Set.of() 静态方法,你可以轻松创建不可变的集合。

示例:使用工厂方法创建不可变集合
List<String> stringList = List.of("one", "two", "three");
Set<String> stringSet = Set.of("one", "two", "three");

这两个方法都非常简洁,但有一些重要事项需要注意:

  1. 返回的实现可能不同:返回的集合实现可能并非你熟悉的 ArrayListHashSet,因此你的代码不应依赖于其具体实现。
  2. 不可变结构:返回的集合是不可变的,你无法向集合中添加或修改元素。如果集合中的元素是可变对象,你仍然可以修改这些对象本身。
  3. 不允许 null 元素:你不能将 null 元素添加到这些集合中,否则会抛出 NullPointerException 异常。
  4. 集合不允许重复元素Set 不允许重复元素,因此如果你尝试向 Set 中添加重复元素,将会抛出异常。
  5. 实现是可序列化的:返回的集合是 Serializable 的,可以进行序列化操作。

这些 of() 方法通常被称为集合的便捷工厂方法,用于快速创建不可变集合。


📄 获取集合的不可变副本

Java SE 10 中,Java 引入了新的便捷方法来创建现有集合的不可变副本。你可以使用 List.copyOf()Set.copyOf() 方法,它们遵循相同的模式。

示例:创建不可变副本
Collection<String> strings = Arrays.asList("one", "two", "three");List<String> list = List.copyOf(strings);
Set<String> set = Set.copyOf(strings);

注意事项:

  • 传入的集合不能为 null,且不能包含 null 元素。如果集合包含重复元素,Set.copyOf() 会去除重复元素,仅保留一个。
  • 返回的集合是不可变的,对副本的任何修改不会影响原集合。
  • 如果传入的集合包含 null 元素,会抛出 NullPointerException 异常。

这些方法提供了一种创建集合副本的简便方式,并确保副本是不可变的。


🔄 将数组包装为 List

Collections 框架中有一个名为 Arrays 的类,提供了大约 200 个方法来处理数组,这些方法主要用于排序、合并、查找等操作。但其中一个方法 Arrays.asList() 非常有用,它可以将一个数组包装成一个 List

示例:使用 Arrays.asList() 包装数组
String[] arr = {"one", "two", "three"};
List<String> list = Arrays.asList(arr);
System.out.println(list);

Arrays.asList() 方法将数组转换为一个 List,并保留数组的顺序。

注意

  • 返回的 List 实际上是数组的一个视图,它与原始数组共享数据结构。
  • 这种 List 的大小是固定的,不能添加或删除元素。如果你尝试执行这些操作,会抛出 UnsupportedOperationException 异常。
  • 你可以替换现有的元素,但不能添加或删除元素。例如:
list.set(0, "newOne"); // 这会成功
list.add("four"); // 会抛出 UnsupportedOperationException 异常

因此,虽然通过 Arrays.asList() 返回的 List 并不是完全不可变的,但它在大小上是受限的,且只能通过替换元素来修改内容。


🎯 小结

  1. List.of()Set.of():这些方法用于创建不可变的集合,集合不允许包含 null 元素,并且不支持修改。
  2. List.copyOf()Set.copyOf():这些方法用于创建现有集合的不可变副本,副本是独立的,不会影响原集合。
  3. Arrays.asList():将数组包装为一个 List,它是数组的视图,大小固定,只能替换元素,不能进行增删操作。
http://www.dtcms.com/a/614339.html

相关文章:

  • 南京app定制台州商品关键词优化
  • 代码生成工具Amazon CodeWhisperer介绍
  • 做视频网站的流程注册公司流程需要多久
  • 域名与空间购买后怎么做网站一般网站海报做一张多久
  • 网站建设合同规定橘子建站是什么
  • LangChain框架入门:全方位解析记忆组件
  • Python如何写一个可迭代对象
  • 命名规范snake_case
  • 即插即用涨点系列 (八):AMDNet 详解!AAAI 2025 SOTA,MLP 融合多尺度分解(MDM)与 AMS 的涨点新范式。
  • riscv64开启llama.cpp的RVV
  • colima 扩容
  • 第十篇 扫雷游戏 下(初版·思路)
  • 哪些网站可以做外链室内设计培训机构排行
  • 个人网站设计说明photoshop网页制作视频教程
  • 2025年10月总结
  • 《Agent 应用开发与落地全景》笔记
  • 字节码(Bytecode)深度解析:跨平台运行的魔法基石
  • 从零实现 REINFORCE/GRPO —— 大模型推理强化微调实践
  • 通州网站建设站开发评价效果图网站密码破解
  • 社区互助|社区​交易|基于springboot+vue的社区​互助交易系统(源码+数据库+文档)
  • 多线程和线程池的理解运用
  • 专业的传媒行业网站开发做医疗网站颜色选择
  • 网站免费搭建平台中山企业网站制作公司
  • 网络:4.1加餐 - 进程间关系与守护进程
  • 边缘算力:云边协同的未来引擎
  • 鸿蒙手机上有没有轻便好用的备忘录APP?
  • Vue3+Vite+Pinia+TS,高效搭建饿了么外卖项目实战教程
  • 成都 网站建设 公司哪家好前端个人介绍网站模板下载
  • 为什么建设长虹网站python流星雨特效代码
  • GTask异步操作管理与使用指南