map.put 覆盖问题(一)

直接将Map放到循环里执行,这样就不会将重复的值覆盖掉。

		//创建ArrayList对象
		List list =new ArrayList();
		
		for (int i =0; i < list.size() ; i ==1) {
			
			Map map = new HashMap();
			//map.put 方法用于覆盖操作
			//一个Map中不能包含相同的key,每个key只能映射一个value,就自动覆盖了
			//实际上是要把Map存值然后再放到List中,那么我们可以想到放一个Map和多个Map实际上不影响;
			//所以直接将Map放到循环里执行,这样就不会将重复的值覆盖掉。
			map.put("message", xxxx);
			list.add(map);
		}
		return list.toString();
### 区别 - **功能层面**:`map.put` 用于向 `Map` 中添加单个键值对,如果键已存在,会覆盖原有的值;`map.putAll` 用于将另个 `Map` 中的所有键值对添加到当前 `Map` 中,如果有重复的键,同样会覆盖原有的值 [^4][^5]。 - **性能层面**:对于将多个键值对添加到 `Map` 中,`map.putAll` 通常比多次调用 `map.put` 更高效。因为 `putAll` 方法内部做了优化,减少了不必要的扩容和哈希表的调整操作。不过此结果会受机器配置影响,且性能还取决于 `Map` 的具体实现,以广泛使用的 `HashMap` 为例,如果性能是约束条件,可优先考虑 `putAll` [^3]。 ### 使用方法 #### map.put `put` 方法接收两个参数,键和对应的值,示例代码如下: ```java import java.util.HashMap; import java.util.Map; public class PutExample { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("a", "1"); map.put("b", "2"); System.out.println(map); } } ``` #### map.putAll `putAll` 方法接收个 `Map` 对象作为参数,将该 `Map` 中的所有键值对添加到当前 `Map` 中,示例代码如下: ```java import java.util.HashMap; import java.util.Map; public class PutAllExample { public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("a", "1"); map.put("b", "2"); Map<String, String> map2 = new HashMap<>(); map2.put("c", "3"); map2.put("d", "4"); map.putAll(map2); System.out.println(map); } } ``` ### 应用场景 #### map.put - 逐个添加键值对:当需要逐个添加键值对到 `Map` 中,且添加的键值对数量较少或添加过程是动态的,每次只确定个键值对时,适合使用 `put` 方法。 - 动态更新单个键值对:在程序运行过程中,根据某些条件动态更新 `Map` 中某个特定键的值时,使用 `put` 方法可以方便地实现。 #### map.putAll - 批量添加键值对:当有个已存在的 `Map`,需要将其所有键值对次性添加到另个 `Map` 中时,使用 `putAll` 方法可以提高效率和代码简洁性。 - 合并 `Map`:在某些业务场景中,需要将多个 `Map` 合并成个 `Map`,此时使用 `putAll` 方法可以很方便地实现。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值