HashMap中如何删除重复元素呢?
下文笔者讲述HashMap中删除重复元素的方法分享,如下所示
定义一个Map
HashMap删除重复元素的实现思路
删除map重复元素的方式1:
定义一个空Map,然后遍历原map依次判断后插入到新map中
方式2:
新建一个set,将map中元素遍历并插入到set中
方式3:
使用Stream删除重复元素
例:定义一个Map
public Map<String, String> initMap = new HashMap<>() {{
put("user1", "张三");
put("user2", "李四");
put("user3", "张三");
put("user4", "李四");
put("user5", "王五");
put("user6", "赵六");
put("user7", "李四");
put("user8", "王五");
}};
1.新创建Map添加不重复元素
/**
* 新创建 Map 添加不重复元素
*/
@Test
public void removeDuplicated1() {
Map<String, String> map = new HashMap<>();
initMap.forEach((k, v) -> {
if (!map.containsValue(v)) {
map.put(k, v);
}
});
System.out.println(map);
}
2.添加Set再删除重复元素
/**
* 添加 Set 再删除重复元素
*/
@Test
public void removeDuplicated2() {
Set<String> set = new HashSet<>();
Iterator<Map.Entry<String, String>> iterator = initMap.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, String> entry = iterator.next();
if (!set.add(entry.getValue())) {
iterator.remove();
}
}
System.out.println(initMap);
}
3.使用Stream删除重复元素
/**
* 使用 Stream 删除重复元素
*/
@Test
public void removeDuplicated3() {
Map<String, String> resultMap = initMap.entrySet().stream().collect(
Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey, (key1, key2) -> key1)
).entrySet().stream().collect(
Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey, (key1, key2) -> key1)
);
System.out.println(resultMap);
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


