public class ReplaceFromMapTest {
public static void main(String[] args) {
if(deleteNamesake(getNames())) {
System.out.println("люди с одинаковыми именами были удалены из \"списка\".");
}
}
public static Map<String, String> getNames() {
Map<String, String> names = new HashMap<String, String>();
names.put("Иванов", "Иван");
names.put("Пупкин", "Вася");
names.put("Коваленко", "Петя");
names.put("Лубнов", "Иван");
return names;
}
public static boolean deleteNamesake(Map<String, String> names) {
boolean result = false;
Collection<String> allFirstNames = names.values();
Set<String> delNames = new HashSet<String>();
for(Map.Entry<String, String> p : names.entrySet()) {
if(Collections.frequency(allFirstNames, p.getValue()) > 1) {
delNames.add(p.getKey());
}
}
if(delNames.size() > 0) {
for(String n : delNames) {
names.remove(n);
result = true;
}
}
return result;
}
}
Только я бы не использовал в HashMap фамилии людей в качестве ключей, большая вероятность совпадений.