Java集合Map的clear与new Map区别详解
作者:Erneste 时间:2022-03-21 15:41:39
对于clear与new Map的区别。我们首先来看一个例子,本例子是我在实际开发中遇到的,需求就是讲map放入到list中,说白了就是list转map,有两种实现方式,分别是:
// 方案一
Map<Integer, Integer> map1 = new HashMap<>();
List<Map<Integer, Integer>> list1 = new ArrayList<>();
for (int i = 0; i < 5; i++) {
map1.clear();
map1.put(i, i * 2);
list1.add(map1);
}
// 方案二
Map<Integer, Integer> map2 = null;
List<Map<Integer, Integer>> list2 = new ArrayList<>();
for (int i = 0; i < 5; i++) {
map2 = new HashMap<>();
map2.put(i, i * 2);
list2.add(map2);
}
大家可以猜猜上面代码执行的结果。与你们猜想的一致么。
解释:
方案一,我们只是把map.clear了(查看clear的源码,clear的作用是把map里每个属性设置为null,并把map的长度设置为0)。并没有销毁,map的指针还是存储在list里面了,所以后面新add到list里面的东西都是同一个map,都是指向同一个map,list里面存储的是map的指针;
方案二,不用我说了,每次创建新的map,每次都是不同的指针,
所以编码的时候要注意了。
来源:https://www.cnblogs.com/DDgougou/articles/10580385.html
标签:Java,clear,new,Map
0
投稿
猜你喜欢
Java获取文件的路径及常见问题解决方案
2023-04-16 04:24:15
DataBinding onClick的七种点击方式
2021-12-08 01:23:22
浅谈Java编程中string的理解与运用
2021-05-31 22:15:44
解决IDEA service层跳转实现类的快捷图标消失问题
2022-09-03 06:38:00
Java动态代理四种实现方式详解
2022-03-12 02:16:38
maven之packaging标签的使用
2021-10-25 05:14:42
C#函数式编程中的标准高阶函数详解
2021-06-09 06:27:07
Android控件gridview实现单行多列横向滚动效果
2022-09-11 10:53:49
Java简单高效实现分页功能
2022-05-24 13:56:02
Java京东面试题之为什么HashMap线程不安全
2022-12-06 07:20:02
Java数据类型的全面剖析
2022-07-09 06:51:38
android利用剪切板传递数据
2022-06-24 06:37:40
Android基于google Zxing实现各类二维码扫描效果
2022-04-10 17:28:59
Android自定义可循环的滚动选择器CycleWheelView
2023-04-06 00:43:16
java文件上传下载代码实例
2023-11-10 05:06:14
Java编程基础测试题分享
2023-11-27 22:14:58
android实现简单底部导航栏
2022-07-10 16:11:08
Android程序启动时出现黑屏问题的解决方法
2022-07-06 05:16:39
Android生成带圆角的Bitmap图片
2022-09-08 11:18:19
解读@RabbitListener起作用的原理
2021-08-04 12:58:59