java map怎么过滤掉重复的key
时间: 2024-01-23 18:04:33 浏览: 126
实现从vector中过滤重复的数据
5星 · 资源好评率100%
Java中的Map是一种键值对的数据结构,它不允许有重复的key存在。如果向Map中添加一个key已经存在的键值对,那么就会覆盖原有的value值。如果想要过滤掉已存在的key,可以使用以下方法:
1. 使用java.util.LinkedHashMap
LinkedHashMap是HashMap的一个子类,它维护了一个双向链表,可以按照插入顺序或者访问顺序来遍历元素。当需要过滤掉重复的key时,可以先创建一个LinkedHashMap,然后使用put()方法添加键值对,因为LinkedHashMap会保留插入的顺序,所以后面重复的key会覆盖前面的key,从而实现了过滤掉重复的key的效果。
示例代码:
```
Map<String, String> map = new LinkedHashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key1", "new_value1"); // key1已经存在,会覆盖原有的value
```
2. 使用java.util.stream
Java 8引入了Stream API,可以使用stream的distinct()方法过滤掉重复的元素。如果想要过滤掉Map中的重复key,可以将Map的key转换成Stream,再使用distinct()方法过滤掉重复的元素,最后将Stream转换成Map即可。
示例代码:
```
Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key1", "new_value1"); // key1已经存在,会覆盖原有的value
Map<String, String> filteredMap = map.entrySet().stream()
.distinct()
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
```
以上两种方法都可以过滤掉重复的key,选择哪种方法取决于具体的业务需求和代码实现。
阅读全文