Полагаю, вы имеете в виду повторяющиеся ключи, а не повторяющиеся значения.Кроме того, поскольку Hashtable является реализацией карты, я предоставлю универсальное решение для карты.
// assuming the maps are of type String / String
for(Map.Entry<String, String> entry : map1.entrySet()){
if(map2.containsKey(entry.getKey()){
map2.remove(entry.getKey());
}else{
map2.put(entry.getKey(), entry.getValue());
}
}
Теперь map2 является объединенной версией со всеми удаленными дубликатами
Но если вы хотитеКарта без дубликатов значений , это довольно громоздко для достижения.Возможно, вам следует проверить интерфейс BidiMap в apache commons / collection .Он предоставляет карты, в которых ключи и значения уникальны.
Собственно, вот простой способ удалить дублирующиеся значения:
Collection<String> values1 = map1.values();
Collection<String> values2 = map2.values();
Collection<String> values1Copy = new ArrayList<String>(values1);
Collection<String> values2Copy = new ArrayList<String>(values2);
while(values1.removeAll(values2Copy)){}
while(values2.removeAll(values1Copy)){}
Теперь все дублирующиеся значения удаляются из обеих карт.(Предполагается, что вы хотите полностью удалить дубликаты. Если вы хотите сохранить одну копию, используйте коллекции values1 и values2 в циклах while и не берите копии.)