JAVA不可变List的实现

有时候方法返回一个列表但是不想调用者改变列表内容。有三种方法可以实现不可变列表,通过调用JDK,Guava以及Apache Commons Collections相关API来实现。

1.JDK

add方法会抛出java.lang.UnsupportedOperationException异常。

2.Apache Commons Collections

同样的调用add方法会抛异常,源码:

3.Guava

这个操作实际创建了原list的copy,不是原list的视图,Guava也提供构建器——返回强类型ImmutableList代替简单List,如下:

Original: https://www.cnblogs.com/foxting/p/12299841.html
Author: KenNgai
Title: JAVA不可变List的实现

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/537948/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 基础篇:JAVA集合,面试专用

    没啥好说的,在座的各位都是靓仔 List 数组 Vector 向量 Stack 栈 Map 映射字典 Set 集合 Queue 队列 Deque 双向队列 关注公众号,一起交流,微…

    Java 2023年6月5日
    0102
  • Java8新特性系列-默认方法

    Java8 Interface Default and Static Methods 在 Java 8 之前,接口只能有公共抽象方法。 如果不强制所有实现类创建新方法的实现,就不可…

    Java 2023年6月7日
    065
  • 深度解析HashMap

    讲讲HashMap? 源码解析 final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evi…

    Java 2023年6月5日
    061
  • java设计模式:观察者模式

    参考博客:Java观察者模式(Observer)SpringBoot事件监听机制及观察者模式/发布订阅模式 1.使用场景 聊天室程序的创建。服务器创建好后,A,B,C三个客户端连上…

    Java 2023年6月8日
    0103
  • HTML详解

    一、初识HTML 初始基本标签代码解释 点击查看代码 <!–DOCTYPE:告诉浏览器我们要使用什么规范–> <!DOCTYPE html> <h…

    Java 2023年6月13日
    058
  • 写了个简洁的Typora+Markdown简历模板

    项目地址:https://github.com/CodingDocs/typora-markdown-resume (欢迎小伙伴们使用!个人能力有限,也欢迎小伙伴们一起完善这个简历…

    Java 2023年6月9日
    074
  • resultMap的用法以及关联结果集映射

    resultTyperesultType可以把查询结果封装到pojo类型中,但必须pojo类的属性名和查询到的数据库表的字段名一致。如果sql查询到的字段与pojo的属性名不一致,…

    Java 2023年6月5日
    077
  • OptaPlanner将弃用DRL(Drools)评分方式!!!

    本来这段时间一直都在加紧我家”三胎”(易排通用智能规划平台)建设,毕竟我们的通用规划平台原定6月初就能上线,但因为其中遇到的各种技术问题及其它项目的突发情况…

    Java 2023年6月16日
    078
  • 模块(类)之间解耦利器:EventPublishSubscribeUtils 事件发布订阅工具类

    如果熟悉C#语言的小伙伴们一般都会知道委托、事件的好处,只需在某个类中提前定义好公开的委托或事件(委托的特殊表现形式)变量,然后在其它类中就可以很随意的订阅该委托或事件,当委托或事…

    Java 2023年6月9日
    089
  • Swagger以及knife4j的基本使用

    Swagger 介绍: Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的 Web 服务 RESTful是一种架构的规范与约束、原则,符合这种…

    Java 2023年6月14日
    070
  • redis启动报无权限

    设置一下SELINUX 关闭SElinux 查看selinux状态 [root@localhost ~]# getenforce Enforcing 表示启动 临时关闭 [root…

    Java 2023年6月9日
    070
  • 记录idea插件,重装时使用

    1.ignore 2Alibaba Java Coding Guidelines plugin support 3CamelCase–大小写转换 4Cron Descr…

    Java 2023年6月5日
    073
  • Win10文件、文件夹被占用解决方法

    有时删除文件/弹出移动硬盘的时候会出现文件或文件夹或磁盘被占用的情况,从而无法删除文件/文件夹或安全弹出移动硬盘。这时可以在资源管理器中搜索该文件、文件夹,来找到对应的程序。使用了…

    Java 2023年6月9日
    075
  • 阿里巴巴编码规范-考试认证

    阿里巴巴编码规范-考试认证 雨打梨花深闭门,忘了青春,误了青春。 1、注册阿里云账号 2、购买认证 需要怒支付一顿早餐Q,可以用支付宝支付,选择支付宝支付然后直接输入支付密码就OK…

    Java 2023年6月5日
    099
  • 1.Spring jar包依赖

    <dependency> <groupid>commons-cli</groupid> <artifactid>commons-cl…

    Java 2023年6月13日
    097
  • 看了这么多年西游记,你可知道孙悟空是如何召唤土地公公的吗?

    小时候最开心的事莫过于躺在沙发上看《西游记》了。大闹天宫、三打白骨精、真假美猴王……一幕幕精彩的故事萦绕脑海,现在想来,回味无穷。 不知道你有没有注意到这个…

    Java 2023年6月5日
    084
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球