package util;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
/**
 *
 * HashMap去重处理
 *
 * @author 16060834
 * @see [相关类/方法](可选)
 * @since [产品/模块版本] (可选)
 */
public class DuplicateMapData {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<String, String>();
        map.put("1", "123");
        map.put("2", "djw");
        map.put("3", "djw");
        map.put("4", "123");
        map.put("5", "djw");
        System.out.println(deleteDuplicate1(map));
        deleteDuplicate2(map);
        System.out.println(map);
    }
    
    /**
     *
     * 方法1:通过containsValue去重后放入新定义map
     *
     * @param map
     * @return
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    private static Map<String, String> deleteDuplicate1(Map<String, String> map) {
        if (map == null || map.size() == 0) {
            return new HashMap<String, String>();
        }
        Map<String, String> map2 = new HashMap<String, String>();
        for (Iterator<Entry<String, String>> iterator = map.entrySet().iterator(); iterator.hasNext();) {
            Entry<String, String> entry = iterator.next();
            if (map2.containsValue(entry.getValue())) {
                continue;
            } else {
                map2.put(entry.getKey(), entry.getValue());
            }
        }
        return map2;
    }
    
    /**
     *
     * 利用set不可重复特性进行判断
     *
     * @param map
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    private static void deleteDuplicate2(Map<String, String> map) {
        if (map == null || map.size() == 0) {
            return;
        }
        Set<String> set = new HashSet<String>();
        for (Iterator<Entry<String, String>> iterator = map.entrySet().iterator(); iterator.hasNext();) {
            Entry<String, String> entry = iterator.next();
            if (set.contains(entry.getValue())) {
                iterator.remove();
                continue;
            } else {
                set.add(entry.getValue());
            }
        }
    }

}

HashMap去重的更多相关文章

  1. LeeCode_01_Two sum

    Two Sum Given an array of integers, return indices of the two numbers such that they add up to a spe ...

  2. [Algorithm] 使用SimHash进行海量文本去重

    在之前的两篇博文分别介绍了常用的hash方法([Data Structure & Algorithm] Hash那点事儿)以及局部敏感hash算法([Algorithm] 局部敏感哈希算法(L ...

  3. json数组去重

    //名字去重 Map<String,Integer> map=new HashMap<String,Integer>(); for(int i=0;i<jows.size ...

  4. java中List对象列表去重或取出以及排序

    面试碰到几次list的去重和排序.下面介绍一种做法: 1. list去重 1.1 实体类Student List<Student>容量10k以上,要求去重复.这里Student的重复标准是 ...

  5. 基于Redis的BloomFilter算法去重

    BloomFilter算法及其适用场景 BloomFilter是利用类似位图或者位集合数据结构来存储数据,利用位数组来简洁的表示一个集合,并且能够快速的判断一个元素是不是已经存在于这个集合.因为基于H ...

  6. Java中对List去重, Stream去重

    问题 当下互联网技术成熟,越来越多的趋向去中心化.分布式.流计算,使得很多以前在数据库侧做的事情放到了Java端.今天有人问道,如果数据库字段没有索引,那么应该如何根据该字段去重?大家都一致认为用Ja ...

  7. 使用SimHash进行海量文本去重[转载]

    阅读目录 1. SimHash与传统hash函数的区别 2. SimHash算法思想 3. SimHash流程实现 4. SimHash签名距离计算 5. SimHash存储和索引 6. SimHas ...

  8. HashMap初认识

    什么是HashSet? 它实现了Set接口,HashSet是Set集合的子类 有哈希表支持的,元素不可重复的哈希码值(实际上是一个HashMap的实例). 它不保证set的迭代顺序(遍历元素的顺序), ...

  9. 通过HashSet达到对象集去重的实现(jdk1.8)

    通过HashSet达到对象集去重的实现(jdk1.8) public class Contract { private String contractId; private String contra ...

随机推荐

  1. man page及info page用法

    Linux系统的在线求助man page与info page 先来了解一下Linux有多少命令呢?在文本模式下,你可以直接按下两个[Tab]按键,看看总共有多少命令可以让你用? [vbird@www ...

  2. Java反射学习系列-绪论

    Java反射学习系列-绪论 https://blog.csdn.net/hanchao5272/article/details/79358924

  3. [root@localhost ~]#各项解释

    [root@localhost ~]# 解释: [登录用户@主机名 索引目录(~家目录,当前所在的目录)]#号代表超级用户,$普通用户

  4. centos7 修改sudoers文件

    使用root账户用 visudo 命令来修改. 转自: https://www.digitalocean.com/community/tutorials/how-to-edit-the-sudoers ...

  5. Java多线程之~~~~synchronized 方法

    在多线程开发中,总会遇到多个在不同线程中的方法操作同一个数据,这样在不同线程中操作这个数据不同的顺序 或者时机会导致各种不同的现象发生,以至于不能实现你预期的效果,不能实现一致性,这时候就能够使用 s ...

  6. html5小趣味知识点系列(一)pubdate

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 公告板shader

    Shader "Custom/LightPoint" { Properties { _MainTex ("Main Tex", 2D) = "whit ...

  8. Android string.xml 显示特殊符号

    项目中要在string.xml 中显示特殊符号,如@号冒号等,直接写肯定不行啦..只能考虑使用ASCII码进行显示: 省略号 …@号 @:号 :空格   以下为常见的ASCII十进制交换编码: --& ...

  9. Unity 插件收集(持续更新)

    MGS Machinery Unity绑定机械关节,铰链,机构插件包.    MGS Mechanical Drive 用于绑定场景中的机械驱动器的Unity插件   Unity Wave Propa ...

  10. Python菜鸟之路:Python基础(三)

    一.编码 推荐阅读<字符编码的前世今生>:http://tgideas.qq.com/webplat/info/news_version3/804/808/811/m579/201307/ ...