使用Collections.emptyList()生成的List不支持add方法

今天使用Collections.emptyList(),返回一个空的List
但是发现它不支持Add功能,调用Add会抛出unsupportedException,
在以后要返回一个空的List,并还需要后续操作时,不能使用Collections.emptyList()方法,看文档发现,List的实现类都有自己的实现,而返回的EmptyList的实现没有实现add(int index, E element方法,使用了

    AbstractList.add(int index, E element){throw new UnsupportedOperationException();}

Java Collections.emptyList方法的使用及注意事项

一、emptyList()

  • 作用:返回一个空的List(使用前提是不会再对返回的list进行增加删除操作);
  • 好处
    1. new ArrayList()创建时有初始大小,占用内存,emptyList()不用创建一个新的对象,可以减少内存开销;
    2. 方法返回一个emptyList()时,不会报空指针异常,如果直接返回Null,没有进行非空判断就会报空指针异常;
  • 注意:此List与常用的List不同,它是Collections类里的静态内部类,在继承AbstractList后并没有实现add()、remove()等方法,所以返回的List不能进行增加删除元素操作。
  • 示例
 @Testpublic void test1() {String str = "";List<String> list = getList(str);System.out.println(list.size());}private static List<String> getList(String str) {if (StringUtils.isBlank(str)) {// 使用时不会报空指针return Collections.emptyList();// 使用null报空指针异常
//            return null; }List<String> list = new ArrayList<String>();list.add(str);return list;}
  • 增删操作
 @Testpublic void test2() {String str = "abc";List<String> list = Collections.emptyList();list.add(str);System.out.println(list.size());}
  • 结果:

如果需要对collections.emptyList()进行增删操作的话,就需要将collections.emptyList()转换成ArrayList()进行操作。

  • 示例:
 @Testpublic void test2() {String str = "abc";List<String> list = Collections.emptyList();List<String> resultList = new ArrayList<>(list);resultList.add(str);System.out.println(resultList.size());System.out.println(resultList);}
  • 结果:

使用Collections.emptyList()生成的List不支持add方法___Java Collections.emptyList方法的使用及注意事项相关推荐

  1. java pdf 中文_java-pdf-itext 生成pdf 文档(支持中文字体)

    java-pdf-itext 生成pdf 文档(支持中文字体) itext 版本:2.1.7 package com.demo.preview; import java.io.ByteArrayOut ...

  2. 用C#实现RSS的生成和解析,支持RSS2.0和Atom格式

    原文:用C#实现RSS的生成和解析,支持RSS2.0和Atom格式 RSS已经非常流行了,几乎所有有点名气的和没名气的网站都有提供RSS服务. 本文详细教你什么是RSS,如是在.Net中使用RSS. ...

  3. java-使用 flying-saucer 通过 xhtml 生成 pdf 文档支持 css 和 图片

    java-使用 flying-saucer 通过 xhtml 生成 pdf 文档支持 css 和 图片 重要说明: 1.使用 xhtml 生成 pdf ,对于 xhtml 的语法要求非常严格: 2.中 ...

  4. PHP资格证书查询系统源码 自动生成二维码 支持导入导出功能

    PHP资格证书查询系统源码 自动生成二维码 支持导入导出功能 程序说明: PHP资格证书查询系统源码 证书管理? 自动生成二维码 支持导入和导出功能 采用fastadmin框架开发而成 PHP资格证书 ...

  5. 【小程序源码】llz制作生成装逼工具支持小程序和公众号制作生成

    这是一款制作生成小工具 支持小程序主图制作生成 也支持公众号的llz制作生成 每一种制作都包含了所有的模式 用户自己填写选择制作就可以了! 好了下面来看看小编的测试演示图吧! 小程序源码下载地址:[小 ...

  6. vue html引入资源dev下404,webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)...

    最近在使用webpack + vue做个人娱乐项目时,发现npm run build后,css js img静态资源文件均找不到路径,报404错误...网上查找了一堆解决办法,总结如下 一.首先修改c ...

  7. linux iphone文件,在linux下生成iphone所需要的视频和音频文件的方法总结

    在linux下生成iphone所需要的视频和音频文件的方法总结 (2011-05-07 09:53:18) 标签: linux iphone mencoder ffmpeg mplayer 一.生成可 ...

  8. Windows 下令 OpenCV 支持 h.264 视频编码的方法

    引言 OpenCV 和 ffmpeg 修改 opencv_ffmepgdll 的步骤 安装 MinGW 编译 x264 编译 ffmpeg 生成 opencv_ffmpegdll 准备 生成 测试 结 ...

  9. jae mysql_京东云计算JAE京东云引擎免费云空间支持PHP,MysqL数据库申请使用方法

    Jingdong App Engine (JAE)京东云引擎,由京东推出,之前貌似测试了好久,不肯让人注册,前一段时间有一个朋友发邮件告诉我现在JAE终于开放注册了,部落第一时间去申请开通了JAE免费 ...

最新文章

  1. java 雅思_基于JAVA的雅思考试管理系统的设计与实现(SSH,MySQL)(含录像)
  2. python基础入门(9)之字典
  3. 消息队列之事务消息,RocketMQ 和 Kafka是如何做的?
  4. 平台层-适配层-核心层|拆分环信ONE SDK架构
  5. java ajax文字搜素,JAVA-WEB AJAX 搜索条自动提示
  6. 《Ray Tracing in One Weekend》——Chapter 9: Dielectrics
  7. android-gradle-plugin3.0.1源码分析
  8. Atitit 游戏的通常流程 attilax 总结 基于cocos2d api
  9. ubuntu定时清理内存脚本
  10. JavaScript实现文件读取、文件导出
  11. tdd:spock工作原理_TDD与 数学形式主义:敌还是友?
  12. 775针服务器cpu性能排行,e7500(775针cpu天梯图)
  13. 【软件测试】POST请求包含哪些参数
  14. 问卷分析之SPSS相关分析、相关系数矩阵(Pearson)
  15. impala 看表结构
  16. Linux NIS服务
  17. vnpy 查询持仓量_vn.py 数据入库
  18. nacos最新版本下载
  19. 网页图片批量获取(Python教程)
  20. 第九章 Maximum Variance Unfolding (MVU)

热门文章

  1. java下拉树_参数模板中下拉树级联下拉数据集查询
  2. 如何让图片充满excel单元格_如何在Excel单元格建立下拉菜单
  3. android dp转px的公式_Android特效专辑——自定义不一样的Toast
  4. [转载] Java获取一个类继承的父类或者实现的接口的泛型参数
  5. 如何使用React Native样式表?
  6. 单链表删除整表_单链表删除
  7. css div滚动_如何使用CSS创建可垂直滚动的div?
  8. java如何实现乌龟爬行_请教:一只乌龟的运动
  9. 单层神经网络线性回归_单层神经网络| 使用Python的线性代数
  10. 密码学哈希函数_哈希函数在密码学中的应用