Je suppose que vous voulez dire les clés en double, pas dupliquer les valeurs. De plus, étant donné que Hashtable est une implémentation de carte, je fournirai une solution de carte générique.
// 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());
}
}
maintenant map2 est la version fusionnée avec tous les doublons supprimés
Mais si vous voulez une carte sans dupliquer les valeurs , qui est assez lourd à atteindre. Peut-être que vous devriez vérifier l'interface BidiMap dans apache commons/collections. Il fournit des cartes à la fois les clés et les valeurs sont uniques.
En fait, voici un moyen simple de supprimer les valeurs en double:
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)){}
Maintenant, toutes les valeurs en double sont supprimées des deux cartes. (Supposons que vous souhaitiez supprimer complètement les dupes.Si vous souhaitez conserver une copie, utilisez les collections values1 et values2 dans les boucles while et ne prenez pas de copies.)
Qu'est-ce qu'un "Hashtable with pair"? Aussi, êtes-vous sûr de vouloir vous débarrasser des valeurs dupliquées, ou plutôt dupliquer les clés? –
désolé, je pense qu'il a été édité ... je veux dire entier, paire de cordes. et je veux me débarrasser des valeurs en double. – Maverick
Non - vous n'avez pas marqué correctement les chevrons. En ce qui concerne la suppression des doublons: laquelle des clés souhaitez-vous supprimer? –