如何避免在HashMap中插入重复值?

时间:2011-09-02 15:47:11

标签: hashmap duplicates

我们说: 映射hm = new HashMap();

如何避免在此HashMap中放置重复值(Emplyees)?

3 个答案:

答案 0 :(得分:2)

我假设您使用Java进行编码,所以:

if(!myMap.containsKey(myKey)){
    myMap.put(myKey, myValue);
}

HashMap的好处是containsKey方法需要恒定的时间(或不变的摊销时间),无论地图中的元素数量是多少,因此您可以在不花费时间的情况下调用它可能需要!

如果您使用其他语言,则逻辑保持不变。

答案 1 :(得分:1)

如果您的用户定义对象被来自对象类的equals和hashcode覆盖,我认为可以使用此通用方法删除Map中的重复值

public static <K, V > Map<K,V> genericMethodtoDeleteMapduplicate(Map<K, V> pMap) {
    Map<K,V> mapWithoutDup=new HashMap<>();

    Set<V> totalvaluesPresent=new HashSet<>();
    for (Map.Entry<K, V> a : pMap.entrySet()) {
        if(totalvaluesPresent.add(a.getValue())){
        mapWithoutDup.put(a.getKey(), a.getValue());
        }
    }
    return mapWithoutDup;
}

答案 2 :(得分:0)

不确定您使用的是哪种语言,但在Java for Hashmap中,它们是:

  

boolean containsKey(Object key)              - 如果此映射包含映射,则返回true   指定密钥。

  

boolean containsValue(Object value)              - 如果此映射将一个或多个键映射到,则返回true   指定值。

只要打电话哪一个对你来说更有意义,检查一下这个条目是否已经在地图中,如果是,那么你知道它是重复的,否则就把它放进去。我肯定你使用的语言会有类似的事情!!