news 2026/9/24 13:53:23

arrylist怎么让他变得不可修改

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
arrylist怎么让他变得不可修改

在Java中,要将一个ArrayList变得不可修改,你可以使用以下几种方法:

###1. 使用Collections.unmodifiableList

Java 提供了Collections.unmodifiableList方法,可以生成一个不可修改的视图。这种方式返回的列表将不允许添加、删除或更新元素,但底层的原始列表仍然可以修改。

import java.util.Collections; import java.util.List; public class UnmodifiableExample { public static void main(String[] args) { List<String> modifiableList = new ArrayList<>(); modifiableList.add("1"); modifiableList.add("2"); modifiableList.add("3"); // 创建不可修改的列表 List<String> unmodifiableList = Collections.unmodifiableList(modifiableList); System.out.println(unmodifiableList); // 输出: [1,2,3] // 异常:UnsupportedOperationException // unmodifiableList.add("4"); } }

###2. 使用List.of方法(Java9及以上)

如果你使用的是Java9或更高版本,可以直接使用List.of方法创建一个不可修改的列表。这种列表在创建后就不能进行任何修改操作。

public class ImmutableListExample { public static void main(String[] args) { List<String> immutableList = List.of("1", "2", "3"); System.out.println(immutableList); // 输出: [1,2,3] // 异常:UnsupportedOperationException // immutableList.add("4"); } }

###3. 自定义集合类如果你需要对集合的行为进行更精细的控制,可以自定义一个不可修改的列表类。在这个类中,你可以只暴露只读的方法,而隐藏其他修改方法。

import java.util.List; public class ImmutableArrayList<T> { private final List<T> list; public ImmutableArrayList(List<T> list) { this.list = new ArrayList<>(list); //复制列表,防止外部修改 } public T get(int index) { return list.get(index); } public int size() { return list.size(); } // 不提供添加、删除元素的方法}

###4. 使用java.util.Setjava.util.Map

在需要不变性(immutable)的情况下,使用其他不变的数据结构(如SetMap)也可以。在 Java9 中提供了Set.of(...)Map.of(...)方法。

public class ImmutableSetExample { public static void main(String[] args) { Set<String> immutableSet = Set.of("1", "2", "3"); System.out.println(immutableSet); // 输出: [1,2,3] // 异常:UnsupportedOperationException // immutableSet.add("4"); } }

结要让ArrayList变得不可修改,最常见的方式是使用Collections.unmodifiableList或 Java9 引入的List.of方法。选择合适的方法依赖于你的具体需求和 Java版本。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 13:53:14

【Dv2Admin】Django配置线上ws反向代理

在 Web 应用程序的部署过程中,安全性、稳定性和实时通信是开发者们普遍关注的重点。Django 是一个非常流行的 Web 框架,常与 Nginx 配合使用,以便实现反向代理、负载均衡以及 SSL 加密等功能。除此之外,实时功能(如 WebSocket)也是现代应用中经常使用的技术。 在项目中实…

作者头像 李华
网站建设 2026/9/24 13:52:32

gsd-core 中 bracket 阶段 ID 约定的统一显示与配置校验解析

【免费下载链接】gsd-core Git. Ship. Done - Core 项目地址&#xff1a; https://gitcode.com/gh_mirrors/ge/gsd-core 点击查看 免费下载 本文围绕 gsd-core 的 ADR-612「bracket 阶段 ID 约定」显示面落地&#xff08;issue #3638 / PR 4111&#xff09;展开&#xff1a;当…

作者头像 李华
网站建设 2026/9/24 13:47:54

【Coze】【视频】踏马爽文工作流

今天给大家演示一个 踏马爽文视频 Coze 工作流。该工作流结合了大语言模型、批处理、语音合成和剪映小助手等功能节点,能够从输入的爽文主题出发,自动生成符合爽文文风的文案,再将文案转化为音频、字幕并组合到视频草稿中,最终实现一键生成爽文短视频的效果。通过这个工作流…

作者头像 李华
网站建设 2026/9/24 13:46:49

Flask 即插视图高级应用

在使用 Flask 框架构建 Web 应用时,即插视图(Pluggable Views)是一种结构化管理视图函数的重要方式。通过将视图逻辑封装进类中,不仅提升了代码的可读性和复用性,也更容易与大型项目架构兼容。尤其在构建 RESTful 接口、模块化开发等场景中,即插视图能极大简化开发流程,…

作者头像 李华