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中不能包含相同的key,每个key只能映射一个value,就自动覆盖了
			//实际上是要把Map存值然后再放到List中,那么我们可以想到放一个Map和多个Map实际上不影响;
			//所以直接将Map放到循环里执行,这样就不会将重复的值覆盖掉。
			map.put("message", xxxx);
			list.add(map);
		}
		return list.toString();

 

### Java 中 `Map` 的 `put()` 方法详解 #### 1. 基本概念 在 Java 集合框架中,`Map` 是种键值对存储结构。其中,`put(K key, V value)` 方法用于向 `Map` 容器中插入个新的键值对。如果指定的键已经存在于容器中,则会更新该键对应的值。 对于 `HashMap` 类型的具体实现,其内部通过哈希算法计算键的位置并完成数据存储操作[^1]。 --- #### 2. 使用说明 - **参数**: - `key`: 键对象,唯标识条记录。 - `value`: 对应于键的对象值。 - **返回值**: 如果插入成功且未覆盖原有值,则返回 `null`;如果键已存在,则返回旧值。 - **异常情况**: - 当尝试插入 `null` 键时(仅限单个),`HashMap` 支持个 `null` 键,而某些子类如 `TreeMap` 不支持任何 `null` 键或值。 --- #### 3. 示例代码 以下是关于如何使用 `put()` 方法的个简单示例: ```java import java.util.HashMap; public class Main { public static void main(String[] args) { // 创建 HashMap 实例 HashMap<Integer, String> map = new HashMap<>(); // 插入键值对 map.put(10, "C"); map.put(20, "C++"); map.put(30, "SFDC"); System.out.println("初始状态:" + map); // 更新已有键的值 map.put(20, "Python"); // 替换原有的 C++ System.out.println("更新后:" + map); // 尝试插入重复键 String oldValue = map.put(10, "GoLang"); // 返回被替换的原值"C" System.out.println("再次更新:" + map); System.out.println("被替换的原始值:" + oldValue); // 输出 "C" // 查看最终结果 System.out.println("最终状态:" + map); } } ``` 运行上述程序的结果如下: ``` 初始状态:{10=C, 20=C++, 30=SFDC} 更新后:{10=C, 20=Python, 30=SFDC} 再次更新:{10=GoLang, 20=Python, 30=SFDC} 被替换的原始值:C 最终状态:{10=GoLang, 20=Python, 30=SFDC} ``` --- #### 4. 扩展功能——批量插入 (`putAll`) 除了单独调用 `put(key, value)` 外,还可以利用 `putAll(Map<? extends K, ? extends V> m)` 方法次性将另个 `Map` 的全部内容复制到当前实例中[^2][^3]。 下面是个演示案例: ```java import java.util.HashMap; import java.util.Map; public class PutAllExample { public static void main(String[] args) { // 初始化两个独立的 Map HashMap<Integer, String> firstMap = new HashMap<>(); firstMap.put(10, "C"); firstMap.put(20, "C++"); HashMap<Integer, String> secondMap = new HashMap<>(); secondMap.put(30, "Java"); secondMap.put(40, "JavaScript"); // 合并第二个 Map 到第个 firstMap.putAll(secondMap); System.out.println("合并后的 Map:" + firstMap); } } ``` 执行此脚本可得: ``` 合并后的 Map:{10=C, 20=C++, 30=Java, 40=JavaScript} ``` 注意,在发生冲突的情况下(即两份映射中有相同键),后者的内容将会覆盖前者的数据项。 --- #### 5. 总结 `put()` 和 `putAll()` 是处理 `Map` 数据的核心工具之。它们分别适用于单元素的操作以及多组关联关系的整体迁移场景下。理解这些基础 API 及其实现细节有助于开发者更高效地构建基于键值对的应用逻辑。 ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值