我们说: 映射hm = new HashMap();
如何避免在此HashMap中放置重复值(Emplyees)?
答案 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 指定值。
只要打电话哪一个对你来说更有意义,检查一下这个条目是否已经在地图中,如果是,那么你知道它是重复的,否则就把它放进去。我肯定你使用的语言会有类似的事情!!