java map相同的key value不覆盖的方法
时间: 2023-09-06 13:01:06 浏览: 151
在Java中,Map接口有一个特性是键是唯一的,所以如果尝试将相同的键放入Map中,新值会覆盖旧值。但是,我们可以使用一些方法来避免这种覆盖行为,使相同键的值不被覆盖。
1. 使用putIfAbsent()方法:在添加键值对时,可以使用putIfAbsent()方法来确保只有当键不存在时才会添加该值,如果键已经存在,则不会进行任何操作。例如:
```java
Map<String, Integer> map = new HashMap<>();
map.put("key", 1);
map.putIfAbsent("key", 2);
System.out.println(map.get("key")); // 输出1
```
2. 使用computeIfAbsent()方法:这个方法可以确保只有当键不存在时才进行计算和添加值,并返回新值或者原始值。例如:
```java
Map<String, Integer> map = new HashMap<>();
map.put("key", 1);
map.computeIfAbsent("key", k -> 2);
System.out.println(map.get("key")); // 输出1
```
3. 使用merge()方法:这个方法可以合并键值对,如果键不存在,则添加新键值对,如果键已经存在,则按照自定义逻辑合并值。例如:
```java
Map<String, Integer> map = new HashMap<>();
map.put("key", 1);
map.merge("key", 2, Integer::sum);
System.out.println(map.get("key")); // 输出3
```
通过使用这些方法,我们可以确保在存在相同键的情况下,不会覆盖该键的值,而是根据需要进行合并或保留原始值。
阅读全文