public class Solution { public static void main(String[] args) { Set<Cat> cats = createCats(); Set<Dog> dogs = createDogs(); Set<Object> pets = join(cats, dogs); printPets(pets); removeCats(pets, cats); printPets(pets); } public static Set<Cat> createCats() { Set<Cat> result = new HashSet<Cat>(); for (int i = 0; i<4; i++){ Cat cat = new Cat(); result.add(cat); } return result; } public static Set<Dog> createDogs() { Set<Dog> dogi = new HashSet<>(); for (int i = 0; i<3; i++){ Dog dog = new Dog(); dogi.add(dog); } return dogi; } public static Set<Object> join(Set<Cat> cats, Set<Dog> dogs) { Set<Object> pets = new HashSet<>(); pets.addAll(cats); pets.addAll(dogs); return pets; } public static void removeCats(Set<Object> pets, Set<Cat> cats) { Iterator<Object> iterator = pets.iterator(); Iterator<Cat> catiter =cats.iterator(); while (iterator.hasNext()){ while (catiter.hasNext()){ if (iterator.next().equals(catiter.next())) iterator.remove(); } } } public static void printPets(Set<Object> pets) { Iterator<Object> printerator = pets.iterator(); while (printerator.hasNext()){ System.out.println(printerator.next()); } } public static class Cat{} public static class Dog{} } Глюк именно в удалении котов. Я пытаюсь создать итератор для каждого множества и по принципу "пузырьковой" перебираю их сравнивая друг с другом. Но чет не работает... хотя лично по мне должно)