文章目录

文章目录

  • 1.构造List后使用List.add初始化
  • 2.使用 {undefined{}} 双括号语法
  • 3.使用 Arrays.asList
  • 4. 使用 Stream (JDK8)
  • 5. 使用 Lists (JDK9)

1.构造List后使用List.add初始化

List<String> stringList = new LinkedList<>();
stringList.add("a");
stringList.add("b");
stringList.add("c");

这是最常规的做法,用起来不太方便。

2.使用 {undefined{}} 双括号语法

List<String> stringList = new LinkedList<String>(){{add("a");add("b");add("c");
}};

这种方式相对方便了一些。

外层的 {} 定义了一个 LinkedList的匿名内部类。内层的 {} 的定义了一个实例初始化代码块。 这个代码块在初始化内部类时执行。所以这里相当于定义了一个匿名内部类,并使用 add 添加元素来初始化。

这种方式有几个缺点:

3.使用 Arrays.asList

List<String> stringList = Arrays.asList("a", "b", "c");

这种方式使用了java.util.Arrays的静态方法。写法上比之前的两种都更简洁,也没有构造匿名内部类的效率问题。
但也有几点需要注意:

int[] intArray = new int[]{1, 2, 3};
Integer[] integerArray = new Integer[]{1, 2, 3};List<int[] > intArrayList = Arrays.asList(intArray);
List<Integer> integerList = Arrays.asList(integerArray);
List<Integer> integerList2 = Arrays.asList(1, 2, 3);

这里 Arrays.asList(intArray)的返回值是 List<int[]>而不是 List<Integer>。这一点也算不上问题,只是使用时需要留意。如果能在 Java 中做到尽量使用 List 和 Integer,尽量避免使用 int 等基本类型和 [] 这种较为底层的数据结构即可避免。

说点题外话:
Java 终究还是不能称之为完全面向对象。毕竟保留了基本数据类型这种东西。诚然基本数据类型使用时比相应的封装类型效率要更高。但也给使用过程中带来了一些困惑:到底该用基本类型,还是封装类型,什么时候该用这个,什么时候该用哪个?虽然 Java 提供给了用户更多的选择,但有种将难题丢给用户的感觉。在我看来,Java 相比的 C++ 一个优点,就是很多事情有了限制,有较为明确清晰的定义,减少了模棱两可,更容易理解。但基本数据类型这里,感觉还是 Java 作为一门改善了 C++ 缺点的语言留下的一些影子。

4. 使用 Stream (JDK8)

List<String> list = Stream.of("a", "b", "c").collect(Collectors.toList());

使用了 JDK8 的 Stream 来初始化。 单纯初始化 List,使用 Stream 有点大材小用了。

5. 使用 Lists (JDK9)

List<String> list = Lists.newArrayList("a", "b", "c");

这个和Arrays.asList一样简洁清晰。

来源:Java中List初始化_随风飘雁的博客-CSDN博客_java list初始化

Java中List初始化(亲测)相关推荐

  1. java 静态块初始化_简单了解java中静态初始化块的执行顺序

    这篇文章主要介绍了简单了解java中静态初始化块的执行顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在java中,其应该是先于所有的方法执行. ...

  2. 浅谈 JAVA中静态初始化块和非静态初始化块的区别

    众所周知在JAVA编程语言中有两种初始化块: 静态初始化块 非静态初始化块 他们到底有什么区别呢?今天就浅谈一下JAVA中静态初始化块和非静态初始化块的区别 静态初始化块 定义: static{} 执 ...

  3. java定义对象数组初始化_怎么定义对象数组 JAVA中怎么初始化对象数组?

    java类怎样定义数组对象数组 在c++编程中,怎么定义对象数组的指针? JAVA中怎么初始化对象数组? java中怎么创建对象数组?比如我创建了一个学生类Sclass Student{ } 类中怎么 ...

  4. 市面上Word转化PDF,PDF转图片Java实现方案(亲测)

    这里写自定义目录标题 前提 第一步:转成PDF 第二步:转成图片 前提 前段时间由于项目需要,需要做如下功能,将上传的word图片转化问图片,经常多天多市面上的插件测试总结,现在将自己的一些心得记录如 ...

  5. java深度复制 xjh 亲测 两种方法

    第一种:http://blog.chinaunix.net/uid-20577907-id-3132181.html   (亲测有用) java 深度复制 2012-03-13 20:25:21 分类 ...

  6. java 初始化和清楚_浅谈Java中的初始化和清理

    引言 这篇文章我们主要介绍Java初始化和清理的相关内容,这些内容虽然比较基础,但是还是在这边做一个简单的总结,方便以后查阅. 初始化过程 Java尽力保证:所有变量在使用之前都会得到恰当的初始化(对 ...

  7. dell电脑java下载_【亲测不管用】【DELL安装系统的坑】亲测UEFI启动模式的电脑安装Win10和Ubuntu双系统(dell笔记本和hp笔记本)...

    这个内容转自:http://blog.csdn.net/ysy950803/article/details/52643737 非常感谢上面的博主,我在网上找了许多教程都是老的教程,都不太对. 首先是d ...

  8. Java漫谈---Java中的初始化

    java中所有变量在使用之前必须得到初始值,否则无法编译通过.java中的变量分为类中的成员变量和方法中的局部变量,方法中的局部变量在使用之前我们必须自己进行初始化. 一.成员变量的初始化: 1.成员 ...

  9. Java中List初始化

    文章目录 1.构造List后使用List.add初始化 2.使用 {{}} 双括号语法 3.使用 Arrays.asList 4. 使用 Stream (JDK8) 5. 使用 Lists (JDK9 ...

最新文章

  1. DNS隐蔽通道 是可以通过dig 子域名来追踪其真实IP的
  2. 知识图谱( 知识图谱管理)
  3. Laravel的初始化安装 1
  4. c++ 提取傅里叶描述子_AI大语音(四)——MFCC特征提取(深度解析)
  5. [导入]基于Spring+zk的WebDisk系统研究.pdf(462.84 KB)
  6. AngularJS中的表单验证机制
  7. mysql查询语法错误_MySQL内部联接查询语法错误
  8. 每个极客都应该知道的Linux命令
  9. 六自由度机械臂运动学分析及其轨迹规划
  10. PotPlayer + VSFilter 加载双字幕视频教程
  11. java前端vml_在Web中使用JavaScript和VML实现WebGIS中的测距
  12. 大一学计算机需要准备做东西,我是浙江大学大一的学生,以后打算学习计算机专业,想去卡耐基梅隆大学或MIT读研,不知道需要做哪些准备?...
  13. MATLAB计算二阶系统单位阶跃响应及在for循环中在图像加图例
  14. 筛法打印质数表【附:100000以内质数表】
  15. 零基础搭建Win系统Anaconda+Pytorch+OpenCV深度学习环境(Win10、Win11、RTX 3090显卡也适用)
  16. Android 快速为背景添加方格线
  17. 第一天:django+vue项目立项
  18. mac 下安装python+selenium+firebox+pycharm+geckodriver
  19. Codeforces 869 C. The Intriguing Obsession (组合数学)
  20. 对称矩阵的判定 C语言 SDUT

热门文章

  1. 蓝桥云 NumPy 百题大冲关
  2. HTTP和HTTPS的区别以及加密方式
  3. 计算机网络管理员 职业技能鉴定,国家职业技能鉴定·操作技能强化训练:计算机网络管理员(国家职业资格四级)(学生取证专用)...
  4. 难道年底故意搞事情?腾讯微信、微软Bing的Bug事件
  5. HDU 2222 Keywords Search【ACAM】
  6. Horizon DaaS 平台中的五虎将
  7. 微信小程序 关闭当前页面
  8. 二进制包离线安装mysql
  9. 一对一直播系统源码的开发是推动直播发展的重要一环节...
  10. 苹果se2_苹果SE2双卡双待3月发布,你会买吗?