Выводит всё равно 7 обьектов и ошибку, что не так?
package com.javarush.task.task08.task0820;
import java.util.Iterator;
import java.util.HashSet;
import java.util.Set;
/*
Множество всех животных
*/
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> cats = new HashSet<Cat>();
cats.add(new Cat());
cats.add(new Cat());
cats.add(new Cat());
cats.add(new Cat());
return cats;
}
public static Set<Dog> createDogs() {
Set<Dog> dogs = new HashSet<Dog>();
dogs.add(new Dog ());
dogs.add(new Dog ());
dogs.add(new Dog ());
return dogs;
}
public static Set<Object> join(Set<Cat> cats, Set<Dog> dogs) {
Set<Object> pets = new HashSet<Object>();
for(Object c:cats){pets.add(c);}
for(Object d:dogs){pets.add(d);}
return pets;
}
public static void removeCats(Set<Object> pets, Set<Cat> cats) {
Iterator <Object> iterator = pets.iterator();
while(iterator.hasNext()){
Object p = iterator.next();
Iterator <Cat> iterator2 = cats.iterator();
while(iterator2.hasNext()){
Cat c = iterator2.next();
if (p.equals(c)){pets.remove(p);}
}
}
}
public static void printPets(Set<Object> pets) {
for (Object o : pets)
System.out.println(o);
}
public static class Cat{}
public static class Dog{}
}