Java笔试题--循环输入List中Map中的值

今天小编去笔试遇到一个蛮有意思的笔试题,题目不难,在此分享给大家,希望大家能共同研究。

直接上题目:
public void a() {
List<Map<String,Integer>> list = new ArrayList<Map<String,Integer>>();
Map<String,Integer> map = new HashMap<String,Integer>();
for (int i=0; i < 10; i++) {
map.put(“a”, i);
list.add(map);
}
for (Map<String,Integer> temp : list) {
System.out.print(temp.get(“a”));
}
}
-------------------------------------------------------------------------------------------------------------
public void b() {
List<Map<String,Integer>> list = new ArrayList<Map<String,Integer>>();
for (int i=0; i < 10; i++) {
Map<String,Integer> map = new HashMap<String,Integer>();
map.put(“a”, i);
list.add(map);
}
for (Map<String,Integer> temp : list) {
System.out.print(temp.get(“a”));
}
}

写出上述两个方法的打印结果:
a:9 9 9 9 9 9 9 9 9 9(10个9);
b:0 1 2 3 4 5 6 7 8 9
原因解析:
a:这是由于Map中相同的key值会覆盖的问题;且a中map为为同一个对象,所有的值会被最后一个值9覆盖,
b:在循环中new新的map,属于不同的对象,所以会按0到9输出。

初始见到觉得挺有新意,因为之前一直没考虑在外面new Hashmap<>();也算是有一些成长吧。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值