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); }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。