news 2026/7/17 11:59:24

从斗地主规则理解 Java 不可变集合

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从斗地主规则理解 Java 不可变集合

目录

一. 怎样理解不可变集合?

二. 不可变集合的应用场景

三. 不可变集合的创建和使用?


温馨提示:JDK8版本中不支持不可变集合,建议升级至JDK11版本以上!!!

一. 怎样理解不可变集合?

谈到不可变,部分小伙伴可能会联想到 "final",被 final 修饰的对象,引用不可修改。

通常情况下,我们所说的不可变主要针对于基本数据类型和引用数据类型。

对于基本数据类型而言,不可变通常意味着值不能再发生改变,如下代码,

int number = 100; final int number2 = 200;

number 没有被 final 修饰,所以后续代码中我们可以对 number 的值进行修改;

number2 被 final 修饰,所以后续代码中不可再对 number2 的值进行修改;

对于引用数据类型而言,不可变通常说的是引用关系不可变,但引用的对象值是可以改变的;

而今天所要说的不可变集合则更为特殊,不可变集合被创建之后,集合的长度不可变,内容也不能改,只能对不可变集合进行查询操作,不能进行增删改操作。

二. 不可变集合的应用场景

(1)如果某些数据不希望被修改,把它放在不可变集合中是一个很好的选择;

(2)当集合对象被不可信的库调用时,集合内部数据不可变也保证了数据的安全性;

不可变集合经典使用场景有我们常玩的斗地主,斗地主中已经规定好了的规则,可以将规则放在不可变集合中,之后则不能修改,也不能再继续添加,只能按照已经规定好的游戏规则去进行。

三. 不可变集合的创建和使用?

在 Java 中,创建不可变集合直接调用 xxx.of 静态方法即可,并且在创建的时候就需要对集合中的值进行初始化,如下代码所示

public static void main(String[] args) { // 创建不可变集合 list List<String> list = List.of("张三","李四","abc"); // 创建不可变集合 set Set<String> set = Set.of("占山", "lisi", "abcc"); // 创建不可变集合 map Map<String,String> map = Map.of("1","a","2","b","3","c"); System.out.println(list); System.out.println(set); System.out.println(map); }

然后我们调用 list.add() 方法,发现方法报错,不支持的操作异常,下面的 Set 和 Map 我就不重复尝试了,感兴趣的小伙伴可以自行动手操作一遍。

还有一点需要额外注意,不可变 Set 集合在进行初始化的过程中,也是不允许有相同的元素存在的哦,如果存在相同的元素,在打印时会报错!如下所示

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

5分钟搭建远程证明环境:openeuler/attest-tools快速部署指南

5分钟搭建远程证明环境&#xff1a;openeuler/attest-tools快速部署指南 【免费下载链接】attest-tools A library that makes implementation of remote attestation easier 项目地址: https://gitcode.com/openeuler/attest-tools 前往项目官网免费下载&#xff1a;ht…

作者头像 李华
网站建设 2026/7/17 11:57:07

HarmonyOS 6.0 滚动条与边缘效果

滚动是移动端最高频的交互操作&#xff0c;没有之一。HarmonyOS NEXT对滚动体验的控制相当细——边缘效果有三种模式&#xff0c;滚动条可以定制颜色和宽度&#xff0c;onScrollFrameBegin可以实现吸顶和折叠。这些API看着简单&#xff0c;但搭配起来有不少细节。 EdgeEffect&a…

作者头像 李华
网站建设 2026/7/17 11:55:46

用 GPT-5.6 做项目维护:代码解释、接口梳理、变更分析三个场景实测

GPT-5.6上线后&#xff0c;大多数人关注的是它写代码的能力。但对很多开发者来说&#xff0c;项目维护才是日常工作的主战场——解释遗留代码、梳理混乱接口、分析代码变更影响。我们拿GPT-5.6、Claude 4.8、Gemini 3.5、Grok 3四个模型做了一轮项目维护场景的实测。如果你正在…

作者头像 李华
网站建设 2026/7/17 11:54:35

PinWin终极指南:免费窗口置顶工具让你的工作效率翻倍

PinWin终极指南&#xff1a;免费窗口置顶工具让你的工作效率翻倍 【免费下载链接】PinWin Pin any window to be always on top of the screen 项目地址: https://gitcode.com/gh_mirrors/pin/PinWin 你是否经常在Windows系统中遇到窗口遮挡的烦恼&#xff1f;参考文档被…

作者头像 李华
网站建设 2026/7/17 11:54:20

Dify高德地图API集成实战指南:零代码打造智能地理服务

Dify高德地图API集成实战指南&#xff1a;零代码打造智能地理服务 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程&#xff0c;自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-Dify-…

作者头像 李华