在 Java 中初始化 List 的五种方法
Java 中经常需要使用到 List,下面简单介绍几种常见的初始化方式。
1.构造 List 后使用 List.add 初始化
这是最常规的做法,用起来不太方便。
2.使用 {{}} 双括号语法
这种方式相对方便了一些。
外层的{}定义了一个 LinkedList 的匿名内部类。内层的{}的定义了一个实例初始化代码块。 这个代码块在初始化内部类时执行。所以这里相当于定义了一个匿名内部类,并使用add添加元素来初始化。
这种方式有几个缺点:
使用匿名内部类,会有效率上的损失。当然在大多数情况下,这点效率都是可接受的。
静态内部类持有所在外部类的引用。如果需要将 List 返回给到其他地方使用,可能造成内存泄漏。
3.使用 Arrays.asList
这种方式使用了 java.util.Arrays 的静态方法。写法上比之前的两种都更简洁,也没有构造匿名内部类的效率问题。
但也有几点需要注意:
Arrays.asList 返回的是 Arrays 的静态内部类(静态内部类不持有所在外部类的引用)。
这个内部类继承自 AbstractList,实现了 RandomAccess,内部使用了一个数组来存储元素。但是不支持增删元素。这点需要注意。如果只是使用 Arrays.asList 来初始化常量,那么这点就不算什么问题了。
Arrays.asList 的参数如果是基本类型的数组时,需要留意返回值可能和你预期的不同。
这里Arrays.asList(intArray)的返回值是List<int[]>而不是List<Integer>。这一点也算不上问题,只是使用时需要留意。如果能在 Java 中做到尽量使用 List 和 Integer,尽量避免使用 int 等基本类型和[]这种较为底层的数据结构即可避免。
虽然本文是在讲初始化List,但这里的{{}}双括号语法同样可用于初始化Map等其他众多类型。相对而言,Arrays.asList就只能用于初始化List类型了。
4. 使用 Stream (JDK8)
使用了 JDK8 的 Stream 来初始化。 单纯初始化 List,使用 Stream 有点大材小用了。
5. 使用 Lists (JDK9)
这个和 Arrays.asList 一样简洁清晰。
欢迎工作一到五年的Java工程师朋友们加入Java填坑之路:860113481
群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Android常用开源库项目,种类齐全,覆盖面广
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qingfeng812/article/details/83897071 Android常用开源库项目 https://www.yundashi168.com/articles/2018/09/12/1536725366888.html 声明: 众多开源库出现的目的是为了不重复造轮子! 真正的高手切记,知其然,知其所以然!多花点时间,找主流的开源库研究源码,成长更大!从中窥探掌握本质的技术和原理,万变不离其宗! 推荐理由: 这份Android常用开源库在持续更新当中,分类会越加完善,涉及的种类会更全面(涉及到移动原生开发领取,跨平台开发领域,HTML5移动开发领域,网络通讯领域,移动应用架构领域)。正在考虑在种类全面的时候,怎样更加突出重点。打造一份Android移动开发人员必备的一份查询手册! 部署在长期稳定的阿里云服务器,稳定支持访问。本网站拥有多台备用服务器,本站发布的内容长期可访问,定期更新! 有技术交流需求的请加入我们, Android实战开发(群号:151909524)欢迎推荐...
- 下一篇
当S8遇上边缘计算:谈阿里云ENS对直播业务场景的支撑
近日,英雄联盟S8全球总决赛落下帷幕,中国战队IG零封FNC夺得冠军。这场比赛引起了国内网友的超高关注度,也给直播平台带来了不小的技术挑战。虎牙直播平台结合阿里云边缘节点技术方案,保障了总决赛当日7000万在线人气的低延时、稳定流畅以及实时互动,为观众提供了流畅的体验。 那么类似S8赛事这样的大型活动直播的特点和技术挑战是什么?为什么业务要下沉到边缘?自建边缘节点和与云服务厂商合作到底该如何选择?边缘节点服务(ENS)又是如何进行技术支撑?提供的针对性优化方案有哪些?本文将为你一一揭晓。 为什么要将业务下沉到边缘? 互动直播场景,通常包括音视频推流、转码、分发、播放等核心业务模块,和弹幕、打赏礼物等互动业务逻辑,在体验上有清晰度、播放流畅度、播放延时等方面的要求。基于上述特点分析,结合直播的体验需求,赛事直播面临的技术挑战主要在以下几个
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS7设置SWAP分区,小内存服务器的救世主
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 2048小游戏-低调大师作品
- Red5直播服务器,属于Java语言的直播服务器