Java 中初始化 List 集合的 6 种方式!
List 是 Java 开发中经常会使用的集合,你们知道有哪些方式可以初始化一个 List 吗?这其中不缺乏一些坑,今天栈长我给大家一一普及一下。
1、常规方式
List<String> languages = new ArrayList<>();
languages.add("Java");
languages.add("PHP");
languages.add("Python");
System.out.println(languages);
这种就是我们平常用的最多最平常的方式了,没什么好说的,后面缺失的泛型类型在 JDK 7 之后就可以不用写具体的类型了,改进后会自动推断类型。
2、Arrays 工具类
List<String> jdks = asList("JDK6", "JDK8", "JDK10");
System.out.println(jdks);
注意,上面的 asList 是 Arrays 的静态方法,这里使用了静态导入。这种方式添加的是不可变的 List, 即不能添加、删除等操作,需要警惕。。
import static java.util.Arrays.asList;
如果要可变,那就使用 ArrayList 再包装一下,如下面所示。
List<String> numbers = new ArrayList<>(Arrays.asList("1", "2", "3"));
numbers.add("4");
System.out.println(numbers);
包装一下,这就是可变的 ArrayList 了。
3、Collections 工具类
List<String> apples = Collections.nCopies(3, "apple");
System.out.println(apples);
这种方式添加的是不可变的、复制某个元素N遍的工具类,以上程序输出:
[apple, apple, apple]
老规则,如果要可变,使用 ArrayList 包装一遍。
List<String> dogs = new ArrayList<>(Collections.nCopies(3, "dog"));
dogs.add("dog");
System.out.println(dogs);
还有初始化单个对象的 List 工具类,这种方式也是不可变的,集合内只能有一个元素,这种也用得很少啊。
List<String> cat = Collections.singletonList("cat");
System.out.println(cat);
还有一个创建空 List 的工具类,没有默认容量,节省空间,但不知道实际工作中有什么鸟用。
List<String> cat = Collections.emptyList("cat");
4、匿名内部类
List<String> names = new ArrayList<>() {{add("Tom");add("Sally");add("John");
}};
System.out.println(names);
这种使用了匿名内部类的方式,一气喝成,是不是很高大上?栈长我曾经也使用过这种方式,不过我觉得这种看似高级,实现也没什么卵用。
5、JDK8 Stream
List<String> colors = Stream.of("blue", "red", "yellow").collect(toList());
System.out.println(colors);
Stream 是 JDK 8 推出来的新概念,比集合还要更强大,还可以和集合互相转换。
上面同样使用了静态导入:
import static java.util.stream.Collectors.toList;
关于 Stream 的一系列教程,可以在Java技术栈微信公众号后台回复关键字:新特性。
6、JDK 9 List.of
List<String> cups = List.of("A", "B", "C");
System.out.println(cups);
这是 JDK 9 里面新增的 List 接口里面的静态方法,同样也是不可变的。
在接口中实现静态方法和默认方法是 JDK 8 中添加的新特性,具体看这篇文章《JDK 8 新特性之接口默认方法与静态方法 》。更多 JDK 新特性,可以在Java技术栈微信公众号后台回复关键字:新特性。
好了,今天栈长就给大家介绍到这里了,这 6 种,你知道几种?另外,Map, Set 也有类似的初始化的方法,大家有兴趣的可以试一下。
你还知道哪些绝招呢?欢迎留言分享一下。。。
来源:https://mp.weixin.qq.com/s?__biz=MzI3ODcxMzQzMw==&mid=2247487850&idx=2&sn=036ce8c9fdf76bb9885318c991fe27c2&chksm=eb53945cdc241d4aa51f68c4199613fa98de5616e0cad1a281903758888734f2a09ae175186a&mpshare=1&scene=23&srcid=120797bZEiBuTC4QxKnwUsj0#rd
Java 中初始化 List 集合的 6 种方式!相关推荐
- Java 中初始化 List 集合的 7 种方式
1.常规方式 List<String> languages = new ArrayList<>(); languages.add("Java"); lang ...
- Java中遍历Map集合的5种方式总结
这篇文章主要给大家介绍了关于Java中遍历Map集合的5种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值. 方式一 通过Map.keySet使用iterator遍历 ...
- java初始化集合_Java 中初始化 List 集合的 6 种方式!
List 是 Java 开发中经常会使用的集合,你们知道有哪些方式可以初始化一个 List 吗?这其中不缺乏一些坑,今天栈长我给大家一一普及一下. 如果想学习Java工程化.高性能及分布式.深入浅出. ...
- java arraylist静态初始化_Java 中初始化 List 集合的 6 种方式!
1.常规方式 List languages = new ArrayList<>(); languages.add("Java"); languages.add(&quo ...
- Java创建初始化List集合的几种方式
1.常规操作 List<Double> list=new ArrayList<>();list.add(32.5);list.add(78.3);list.add(45.6); ...
- Java中遍历Set集合的三种方法
Map集合:链接: Map集合的五种遍历方式及Treemap方法 Set集合:链接: Java中遍历Set集合的三种方法 TreeSet集合:链接: Java深入了解TreeSet,和迭代器遍历方法 ...
- Java中遍历Set集合的三种方法(实例代码)
哈喽,欢迎来到小朱课堂,下面开始你的学习吧! Java中遍历Set集合的三种方法 废话不多说,直接上代码 1.迭代遍历: Set set = new HashSet(); Iterator it = ...
- Java中线程的创建有两种方式
Java中继承thread类与实现Runnable接口的区别 Java中线程的创建有两种方式: 1. 通过继承Thread类,重写Thread的run()方法,将线程运行的逻辑放在其中 2. 通过 ...
- java 判断数组已经存满_详解Java中数组判断元素存在几种方式比较
1. 通过将数组转换成List,然后使用List中的contains进行判断其是否存在 public static boolean useList(String[] arr,String contai ...
最新文章
- go1.8之安装配置
- 收官礼 |《神策 2018 数据驱动大会回顾专刊》发布,你要的干货,已打包!
- 计算机对口升学可以报考的学校,对口升学可以报考的学校都在这里,赶快来收藏吧...
- c++ string 删除字符_字符串操作的全面总结
- 连接驱动_在jdbc中完成对于jdbc参数、jdbc变量,加载驱动,创建连接的封装
- 网络编程之Tcp,udp
- 微软开源计算机视觉专题库,含分类、检测、分割、关键点、跟踪、动作识别等主流方向...
- ubuntu中bash,sh,./,bash区别
- MySQL的replace方法
- EF 数据库连接约定(Connection String Conventions in Code First)
- 【python初学者日记】读入正整数n,判断它是质数还是合数,显示所有的因数(包括1和它自身)
- 智能计算机与应用是核心期刊吗,人工智能的核心期刊都有哪些
- lisp块改色_关于CAD制图的技巧:篇九,快速修改颜色。
- word 文档密码 html,Word文档密码解决打开方法
- 16个最佳PSD文件下载网站
- 复正弦信号、实数信号的DFT
- 七大数字经济重点产业!
- Vscode好用的快捷键:批量文字修改快捷键选中相同内容快捷键
- 论文投稿必看,审稿人意见互相矛盾,作者该怎么办?
- 话机按键音效——DTMF生成