java8中Map<String, List<String>>有相同的value,删除指定key的value中一个
时间: 2024-05-05 10:21:21 浏览: 143
可以使用Java 8中的Stream API和lambda表达式来实现此操作。具体步骤如下:
1. 使用Map的computeIfPresent()方法来获取指定key对应的value,并使用lambda表达式过滤掉其中一个重复的元素。
2. 如果过滤后的value为空,则使用Map的remove()方法删除指定key的entry。
代码示例:
```java
public static void removeDuplicateValue(Map<String, List<String>> map, String key, String value) {
map.computeIfPresent(key, (k, v) -> {
v.removeIf(str -> str.equals(value));
return v.isEmpty() ? null : v;
});
}
```
调用示例:
```java
Map<String, List<String>> map = new HashMap<>();
map.put("key1", Arrays.asList("value1", "value2"));
map.put("key2", Arrays.asList("value3", "value4", "value3"));
System.out.println("Before removal: " + map);
removeDuplicateValue(map, "key2", "value3");
System.out.println("After removal: " + map);
```
输出结果:
```
Before removal: {key1=[value1, value2], key2=[value3, value4, value3]}
After removal: {key1=[value1, value2], key2=[value4, value3]}
```
阅读全文