创建list

Collections.emptyList(); 创建一个list
Arrays.asList<>(可以有参数);
Lists.newArrayList<>(可以有参数);

常规方式

List<String> languages = new ArrayList<>();
languages.add("Java");
languages.add("PHP");
languages.add("Python");
System.out.println(languages);

Arrays 工具类

//这里是不可变的 List, 即不能添加、删除等操作
List<String> jdks = Arrays.asList("JDK6", "JDK8", "JDK10");
System.out.println(jdks);
//如果要可变,那就使用 ArrayList 再包装一下
List<String> numbers = new ArrayList<>(Arrays.asList("1", "2", "3"));
numbers.add("4");
System.out.println(numbers);

源码

public static <T> List<T> asList(T... a) {return new ArrayList<>(a);
}//静态内部类
private static class ArrayList<E> extends AbstractList<E> implements RandomAccess, java.io.Serializable {private static final long serialVersionUID = -2764017481108945198L;private final E[] a;ArrayList(E[] array) {a = Objects.requireNonNull(array);}...
}

Collections 工具类

//添加的是不可变的、复制某个元素N遍的工具类
List<String> apples = Collections.nCopies(3, "apple");
System.out.println(apples);  //[apple, apple, apple]
//如果要可变,使用 ArrayList 包装一遍
List<String> dogs = new ArrayList<>(Collections.nCopies(3, "dog"));
dogs.add("dog");
System.out.println(dogs);

源码

 public static <T> List<T> nCopies(int n, T o) {if (n < 0)throw new IllegalArgumentException("List length = " + n);return new CopiesList<>(n, o);}
//静态内部类
private static class CopiesList<E> extends AbstractList<E> implements RandomAccess, Serializable {private static final long serialVersionUID = 2739099268398711800L;final int n;final E element;CopiesList(int n, E e) {assert n >= 0;this.n = n;element = e;}...
}

初始化单个对象的 List ,这种方式也是不可变的,集合内只能有一个元素,这种也用得很少

List<String> cat = Collections.singletonList("cat");
System.out.println(cat);

创建空 List ,没有默认容量,节省空间

List<String> cat = Collections.emptyList();

匿名内部类

看似高级,实现也没什么卵用

List<String> names = new ArrayList<>() {{add("Tom");add("Sally");add("John");
}};
System.out.println(names);

JDK8 Stream

List<String> colors = Stream.of("blue", "red", "yellow").collect(Collectors.toList());
System.out.println(colors);

JDK 9 List.of

//不可变的
List<String> cups = List.of("A", "B", "C");
System.out.println(cups);

com.google.common.collect.Lists

//初始化后是不可变的,内部是final
Lists.newArrayList(...)

问题

当使用 Arrays.asList() 时,如果里面没有放元素,在 idea 上方控制条 -> git -> commit 时,会有 review 提示

Warning:(195, 101) Call to 'asList()' to create an empty List

如果后期不打算在里面放东西时,或者目前不放,之后再改,可以 改为 Collections.emptyList()就不会有 review 提示了

初始化创建 list相关推荐

  1. hdfs namenode -format 初始化创建不了目录的问题

    Hadoop格式化namenode错误:java.io.IOException: Cannot create directory hdfs namenode -format 初始化创建不了目录的问题, ...

  2. 初始化创建画布_使用HTML5,画布和开放数据创建全球降水(雨)可视化

    初始化创建画布 我目前正在为Three.js编写下一本书,其中一章涉及可视化开放数据. 在寻找可以使用的数据时,我遇到了来自NOAA的一组数据. 通过此站点,您可以以网格格式下载一组全世界的每月降水报 ...

  3. HbuliderX + vue项目(初始化创建) - 准备篇

    环境搭建准备 · 命令记录: 安装npm 安装完成与否检测:npm -v(出现版本号,表示安装成功) 由于网络原因,建议安装为cnpm(淘宝国内镜像) npm install -g cnpm --re ...

  4. 高德地图开发之地图配置及vue上初始化创建地图

     开门见山地说,现如今地图相关的开发业务在工作中越来越常见,目前市面上主流的地图开发还是以百度和高德为主,今天就来讲一下高德地图的配置和在vue上的初始化创建,帮助大家更好更快的了解高德地图开发相关的 ...

  5. Vue初始化创建项目

    Vue初始化创建项目 1.创建项目: 2.打开项目: 3.删除项目中的默认添加文件 4.添加自己的东西 4.1.初始化HTML中的代码: 4.2.使用视口缩放+rem的方式适配移动端. 4.3.运行查 ...

  6. MATLAB中怎样初始化(创建)二维、三维、四维以及多维矩阵,各维度的索引顺序是怎样的?

    目录 1 在MATLAB中初始化二维矩阵 2 在MATLAB中初始化三维矩阵 3 在MATLAB中初始化四维矩阵 4 在MATLAB中初始化N维矩阵 1 在MATLAB中初始化二维矩阵 在MATLAB ...

  7. mongo在哪创建管理员_MongoDB初始化创建管理员账户登录

    1.查看mongodb服务是否开启: ps -ef | grep mongod 2.管理员角色必须在启用--auth认证参数之前创建,否则会没有操作权限.如果之前已经创建过用户,请先删除. kill掉 ...

  8. python dict初始化大小_在Python中初始化/创建/填充Dict的Dict

    我必须在为我的研究编写代码时经常这样做.您将希望使用defaultdict包,因为它允许您添加键:值对在任何级别上,通过简单的分配.回答完你的问题我会给你看的.这是直接来源于我的一个程序.关注最后4行 ...

  9. Hibernate初始化创建SessionFactory,Session,关闭SessonFactory,session

    1.hibernate.cfg.xml 1 <?xml version='1.0' encoding='UTF-8'?> 2 <!DOCTYPE hibernate-configur ...

最新文章

  1. Spring整合了CXF的一个applicationContext.xml的配置文件
  2. 蓝桥练习-算法训练 最大最小公倍数
  3. The configured Task Off-Heap Memory 0 bytes is less than the least required Python worker Memory 79
  4. POJ 1228 Grandpa's Estate --深入理解凸包
  5. Java REST JAX-RS 2.0 –如何处理日期,时间和时间戳记数据类型
  6. sublime的一些快捷键
  7. 如何用python完成基本统计信息计算_如何用python计算基本统计值?
  8. 【C#小知识】C#中一些易混淆概念总结(八)---------解析接口
  9. 【翻译】YARN Architecture
  10. CodeGym—Java自学神器
  11. 计算机上如何设置访问密码忘了怎么办,电脑设置的密码忘记了怎么办
  12. 使用Java和FFempeg批量转码B站缓存下来的列表视频,成MP4格式
  13. +中文词频统计及词云制作9-25
  14. 利用同义词简化SQL Server 2005开发
  15. CentOS Linux虚拟机内存耗费太大
  16. NGINX配置以及优化
  17. Mac basictex缺少xxx.sty文件
  18. python自动化 2 对象定位(1)
  19. 云计算究竟有哪些优势
  20. INSERT INTO IF NOT EXISTS问题

热门文章

  1. 关于职场中的面试,要是遇到这些问题时,应该怎么回
  2. 生活随笔,人生态度决定生活质量
  3. Microsoft SQL Server 2019 Developer 简体中文正式版(附安装教程) 64位
  4. Tomcat面试题笔记
  5. C语言 HexDump
  6. IIS建网站以及建FTP
  7. MongoDB备份/恢复方案
  8. MapReduce课后练习
  9. vue路由传参-如何使用encodeURI加密参数
  10. STM32F103软件I2C读取角度传感器AS5600角度信息