HashMap中如何删除重复元素呢?

戚薇 Java经验 发布时间:2023-05-21 22:19:58 阅读数:18534 1
下文笔者讲述HashMap中删除重复元素的方法分享,如下所示

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);
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202305/16846788366567.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者