java初始化集合_Java 中初始化 List 集合的 6 种方式!
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 种方式!相关推荐
- java 三大集合_java中的三大集合入门笔记(简单实用)
为什么使用集合框架 如图: 集合的好处: 集合弥补了数组的缺陷,它比数组更灵活更实用,可大大提高软件的开发效率,而且不同的集合适用于不同的场合. Java集合主要分为以下3种类型 Java集合框架提供 ...
- java collectiongroup 类_Java中的collection集合类型总结
java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.java集合工具包位置是java.util.* java集合主要可以划分为4个部分:list列表.set集 ...
- JAVA中的arraylist集合_java中遍历ArrayList集合的四种方式
详细内容 ArrayList遍历:取出ArrayList集合中的数据 方式一:for循环 方式二:增强for循环:foreach 方式三:Iterator:迭代器 方式四:ListIterator:双 ...
- java中遍历集合_java中遍历ArrayList集合的四种方式
ArrayList遍历:取出ArrayList集合中的数据 方式一:for循环 方式二:增强for循环:foreach 方式三:Iterator:迭代器 方式四:ListIterator:双向迭代器 ...
- java random构造方法_Java中的Random()函数及两种构造方法
Java中存在着两种Random函数: java.lang.Math.Random; 调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是 ...
- java中map类型_Java中Map类型遍历的两种方式对比
Java中Map类型是存储键值对数据的类型,在编程过程经常使用,进行遍历操作对于每个Java程序员都不会模式,下面总结两种常用的遍历方式(一种keySet,一种entrySet),通过对比让你明白使用 ...
- java 当月最后一天_java中取得当月最后一天的四种方法
java中取得当月最后一天的四种方法 第一种,使用Calendar的roll方法,在限制某个日期字段不改变的形式下,改变其他日期字段的值. 第二种,使用Calendar的getActualMaximu ...
- java获取小程序中用户的unionId的三种方式
前提条件: 想要获取unionId,必须几个小程序或者公众号在同一个主体之下,要不然没有unionId,只会生成用户的openid,可登陆下面这个微信官方平台查看 https://open.weixi ...
- Java EE 7 Batch中传递属性/参数的2种方式
对于Java EE 7批处理工具,有两种将属性/参数传递给块和批处理的方法. 本快速指南向您展示了两种方式,在开发批处理Java EE 7方式时可能会经常使用它们. 1.运行前预定义的属性/参数 预定 ...
最新文章
- DEDECMS教程:上/下一篇文章标题长度的截取方法
- python使用imbalanced-learn的ADASYN方法进行上采样处理数据不平衡问题
- Understand Execution Context
- 1031 Hello World for U (20 分)【难度: 一般 / 知识点: 找规律】
- MySQL+Tomcat+JVM,看完还怕面试官
- 学历史能学计算机吗,历史专业学计算机好吗
- Web Components 系列(五)—— 关于 Templates
- python工资一般多少p-大神级Python工程师是怎么P图的,带你用Python玩转P图
- Android 中文 API——android.widget合集(上)(20篇)
- 大家好 我是新来的
- 案例7-3 统计工龄 (20 分)(简单)
- 计算机上wps表格乘除算法,excel乘法公式-WPS表格乘法运算大全
- 微软邮箱服务器出问题了,在微软邮箱登录时常见的问题有哪些
- 关于dash的基础学习
- 假如生活欺骗了你之ARP欺骗,原理图
- Linux 系统发展史小览 (与Unix区别科普文)
- 基于labview的波峰与波谷检测
- Expected ']' Expected expression
- 强力科普一下PCIe/CXL(Compute Express Link)
- 《Origin 9.0科技绘图与数据分析超级学习手册》一第 1 章 Origin 9.0概述1.1 Origin简介...
热门文章
- 导师会指导改matlab程序吗,导师指导记录.docx
- php 返回数组 键名,php array_keys 返回数组的键名
- Maven中jar包冲突的解决方式
- Python3搭建Django框架浅析
- null在java存在的意义何在,Java并发编程——volatile关键字
- jfinal linux 乱码,分享JFinal中renderFile方法中文文件名乱码问题的解决办法
- js 获取鼠标在画布的位置_javascript求鼠标在canvas画布里的坐标
- 字节跳动最新开源!java语言程序设计进阶篇
- ecilpse连接oracle ojdbc驱动
- 解决The server cannot be started because one or more of the ports are invalid.