Java集合类型对象的快速初始化

news/2024/11/26 5:56:42/

在Java中, 集合类型的对象初始化, 一般是先创建对象, 然后往集合里面增加元素,这种写法直观,但是撰写代码的时候感觉比较冗余, 是否有什么酷炫的方式简化定义初始化呢?
本篇介绍字符串数组、List 和 Map类型对象的定义初始化简单方式。

字符串数组的简化初始化

常用的写法:

		String[] strArray = new String[3] ;strArray[0] = "1";strArray[1] = "2";strArray[2] = "3";

简化的写法:

String[] strArray = new String[] {"1","2","3"};

这里使用一行代码, 替换了四行代码, 是不是简化多了?

列表的简化初始化

常用的写法先创建对象, 再往里面添加元素, 代码如下:

		List<String> list = new ArrayList<String>();list.add("1");list.add("2");list.add("3");

简化的写法:

List<String> list = Arrays.asList("1","2","3");

通过Arrays的asList() 方法来建立列表类型对象的初始化。

Map类型的简化初始化 - 不建议使用

Map以键值对的方式存储数据, 定义一个HashMap类型的对象并初始化的代码如下:

		Map<String,String> map = new HashMap<String,String>();map.put("key1", "1");map.put("key2", "2");map.put("key3", "3");

可以使用双括号初始化(Double Brace Initialization)来简便地初始化 HashMap,代码如下:

		Map<String,String> map = new HashMap<String,String>(){{put("key1", "1");put("key2", "2");put("key3", "3");}};

上面的方式是通过创建一个匿名子类并在初始化代码块中调用 put 方法来达到简便地定义和初始化 HashMap 的目的。

但是请注意,这种方法在某些场景下可能会造成内存泄漏,因为匿名子类会保留对外部类的引用。而且上面代码的简化程度也不高,所以Map 的简化方式不推荐使用。

本篇示例代码

  • https://github.com/osxm/java-ency/blob/master/src/main/java/com/osxm/je/chp1/CollectionInitial.java



http://www.ppmy.cn/news/85377.html

相关文章

python为什么长期霸占榜首

Python霸占榜首 只因它真的很强 Python&#xff0c;年龄可能比很多读者都要大&#xff0c;但是它在更新快速的编程界却一直表现出色&#xff0c;甚至有人把它比作是编程界的《葵花宝典》&#xff0c;只是Python的速成之法相较《葵花宝典》有过之而无不及。 Python简洁&#x…

python列表获取 value值

caseinfo[{name: 获取token,request: {method: get, url: /cgi-bin/token, headers: none,datas:{grant_type: client_credential,appid: wx2ed6b772cc34974d, secret: aca6a76b0a57f9d32a90a716318d6736}}, validate: none}] 举例说明&#xff0c;近期在学习python的时候需要获…

opencv_c++学习(十八)

一、连通域分析 连通域分割原理&#xff1a; 邻域分为4邻域和8邻域。如上图所示。当使用连通域分割方法时&#xff0c;需要首先将图像进行二值化处理&#xff0c;在进行连通域的处理。右图为连通域分割两遍法的一个示意图&#xff0c;具体原理可以自行查询&#xff0c;这里只…

Python调用腾讯云函数传递json数据

前言 有些时候有一些公共的方法&#xff0c;需要放在服务器上&#xff0c;在不同的电脑上使用。但是我们有没有自己的服务器&#xff0c;所以考虑将公共的方法放在腾讯云、华为云、阿里云、百度云等云平台上&#xff0c;方便在不同的电脑上复用。 我们这里使用的是腾讯云&#…

【C语言】数组名作函数参数

数组名作函数参数 引例思考例2通用性指针形参和数组形参几点说明 引例 在主函数中输入10个整数&#xff0c;并存入一个一维数组中&#xff1b;然后在被调函数中&#xff0c;将0号元素的值改为原值的10倍&#xff1b;最后在主函数中输出结果。 思路&#xff1a; 若想在被调函数…

【Linux】线程同步/生产消费模型/线程池/读写锁

目录 1.Linux线程同步 1.1.条件变量 1.1.1.同步概念与竞态条件 1.1.2.条件变量函数 初始化和销毁 1.1.3.等待条件满足 1.1.5.为什么 pthread_cond_wait 需要互斥量? 1.1.6.条件变量使用规范 2.生产者消费者模型 2.1.模型概念 2.2.模型优点 2.3.基于Blocking Queue的…

MySQL---事务

1. 事务操作 开启事务&#xff1a;Start Transaction 任何一条DML语句(insert、update、delete)执行&#xff0c; 标志事务的开启命令&#xff1a;BEGIN 或 START TRANSACTION 提交事务&#xff1a;Commit Transaction 成功的结束&#xff0c;将所有的DML语句操作历史记录…

小电流接地系统单相接地故障选线及保护

小电流接地系统单相接地故障选线及保护 姓名[1] 【摘要】&#xff1a;小电流系统单相接地故障选线以及定位一直是研究的热点&#xff0c;本文基于小电流系统出现单相接地短路后的特征&#xff0c;提出利用稳态特征和暂态特征信息结合的方式进行故障选线与保护&#xff0c;然后利…