List 是 Java 开发中经常会使用的集合,你们知道有哪些方式可以初始化一个 List 吗?这其中不缺乏一些坑,今天栈长我给大家一一普及一下。

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,里面有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

1、常规方式

List languages = new ArrayList<>();

languages.add("Java");

languages.add("PHP");

languages.add("Python");

System.out.println(languages);

这种就是我们平常用的最多最平常的方式了,没什么好说的,后面缺失的泛型类型在 JDK 7 之后就可以不用写具体的类型了,改进后会自动推断类型。

2、Arrays 工具类

List jdks = asList("JDK6", "JDK8", "JDK10");

System.out.println(jdks);

注意,上面的 asList 是 Arrays 的静态方法,这里使用了静态导入。这种方式添加的是不可变的 List, 即不能添加、删除等操作,需要警惕。。

import static java.util.Arrays.asList;

如果要可变,那就使用 ArrayList 再包装一下,如下面所示。

List numbers = new ArrayList<>(Arrays.asList("1", "2", "3"));

numbers.add("4");

System.out.println(numbers);

包装一下,这就是可变的 ArrayList 了。

3、Collections 工具类

List apples = Collections.nCopies(3, "apple");

System.out.println(apples);

这种方式添加的是不可变的、复制某个元素N遍的工具类,以上程序输出:

[apple, apple, apple]

老规则,如果要可变,使用 ArrayList 包装一遍。

List dogs = new ArrayList<>(Collections.nCopies(3, "dog"));

dogs.add("dog");

System.out.println(dogs);

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

List cat = Collections.singletonList("cat");

System.out.println(cat);

还有一个创建空 List 的工具类,没有默认容量,节省空间,但不知道实际工作中有什么鸟用。

List cat = Collections.emptyList("cat");

4、匿名内部类

List names = new ArrayList<>() {{

add("Tom");

add("Sally");

add("John");

}};

System.out.println(names);

这种使用了匿名内部类的方式,一气喝成,是不是很高大上?栈长我曾经也使用过这种方式,不过我觉得这种看似高级,实现也没什么卵用。

5、JDK8 Stream

List colors = Stream.of("blue", "red", "yellow").collect(toList());

System.out.println(colors);

Stream 是 JDK 8 推出来的新概念,比集合还要更强大,还可以和集合互相转换。

上面同样使用了静态导入:

import static java.util.stream.Collectors.toList;

6、JDK 9 List.of

List cups = List.of("A", "B", "C");

System.out.println(cups);

这是 JDK 9 里面新增的 List 接口里面的静态方法,同样也是不可变的。

在接口中实现静态方法和默认方法是 JDK 8 中添加的新特性,

好了,今天就给大家介绍到这里了,这 6 种,你知道几种?另外,Map, Set 也有类似的初始化的方法,大家有兴趣的可以试一下。

你还知道哪些绝招呢?欢迎留言分享一下。。。

java初始化集合_Java 中初始化 List 集合的 6 种方式!相关推荐

  1. java 三大集合_java中的三大集合入门笔记(简单实用)

    为什么使用集合框架 如图: 集合的好处: 集合弥补了数组的缺陷,它比数组更灵活更实用,可大大提高软件的开发效率,而且不同的集合适用于不同的场合. Java集合主要分为以下3种类型 Java集合框架提供 ...

  2. java collectiongroup 类_Java中的collection集合类型总结

    java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.java集合工具包位置是java.util.* java集合主要可以划分为4个部分:list列表.set集 ...

  3. JAVA中的arraylist集合_java中遍历ArrayList集合的四种方式

    详细内容 ArrayList遍历:取出ArrayList集合中的数据 方式一:for循环 方式二:增强for循环:foreach 方式三:Iterator:迭代器 方式四:ListIterator:双 ...

  4. java中遍历集合_java中遍历ArrayList集合的四种方式

    ArrayList遍历:取出ArrayList集合中的数据 方式一:for循环 方式二:增强for循环:foreach 方式三:Iterator:迭代器 方式四:ListIterator:双向迭代器 ...

  5. java random构造方法_Java中的Random()函数及两种构造方法

    Java中存在着两种Random函数: java.lang.Math.Random; 调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是 ...

  6. java中map类型_Java中Map类型遍历的两种方式对比

    Java中Map类型是存储键值对数据的类型,在编程过程经常使用,进行遍历操作对于每个Java程序员都不会模式,下面总结两种常用的遍历方式(一种keySet,一种entrySet),通过对比让你明白使用 ...

  7. java 当月最后一天_java中取得当月最后一天的四种方法

    java中取得当月最后一天的四种方法 第一种,使用Calendar的roll方法,在限制某个日期字段不改变的形式下,改变其他日期字段的值. 第二种,使用Calendar的getActualMaximu ...

  8. java获取小程序中用户的unionId的三种方式

    前提条件: 想要获取unionId,必须几个小程序或者公众号在同一个主体之下,要不然没有unionId,只会生成用户的openid,可登陆下面这个微信官方平台查看 https://open.weixi ...

  9. Java EE 7 Batch中传递属性/参数的2种方式

    对于Java EE 7批处理工具,有两种将属性/参数传递给块和批处理的方法. 本快速指南向您展示了两种方式,在开发批处理Java EE 7方式时可能会经常使用它们. 1.运行前预定义的属性/参数 预定 ...

最新文章

  1. DEDECMS教程:上/下一篇文章标题长度的截取方法
  2. python使用imbalanced-learn的ADASYN方法进行上采样处理数据不平衡问题
  3. Understand Execution Context
  4. 1031 Hello World for U (20 分)【难度: 一般 / 知识点: 找规律】
  5. MySQL+Tomcat+JVM,看完还怕面试官
  6. 学历史能学计算机吗,历史专业学计算机好吗
  7. Web Components 系列(五)—— 关于 Templates
  8. python工资一般多少p-大神级Python工程师是怎么P图的,带你用Python玩转P图
  9. Android 中文 API——android.widget合集(上)(20篇)
  10. 大家好 我是新来的
  11. 案例7-3 统计工龄 (20 分)(简单)
  12. 计算机上wps表格乘除算法,excel乘法公式-WPS表格乘法运算大全
  13. 微软邮箱服务器出问题了,在微软邮箱登录时常见的问题有哪些
  14. 关于dash的基础学习
  15. 假如生活欺骗了你之ARP欺骗,原理图
  16. Linux 系统发展史小览 (与Unix区别科普文)
  17. 基于labview的波峰与波谷检测
  18. Expected ']' Expected expression
  19. 强力科普一下PCIe/CXL(Compute Express Link)
  20. 《Origin 9.0科技绘图与数据分析超级学习手册》一第 1 章 Origin 9.0概述1.1 Origin简介...

热门文章

  1. 导师会指导改matlab程序吗,导师指导记录.docx
  2. php 返回数组 键名,php array_keys 返回数组的键名
  3. Maven中jar包冲突的解决方式
  4. Python3搭建Django框架浅析
  5. null在java存在的意义何在,Java并发编程——volatile关键字
  6. jfinal linux 乱码,分享JFinal中renderFile方法中文文件名乱码问题的解决办法
  7. js 获取鼠标在画布的位置_javascript求鼠标在canvas画布里的坐标
  8. 字节跳动最新开源!java语言程序设计进阶篇
  9. ecilpse连接oracle ojdbc驱动
  10. 解决The server cannot be started because one or more of the ports are invalid.