Подскажите, почему мой способ не проходит, а если написать pets.removeAll(cats); - то все работает.
Но дальше опять не выводится текст, хотя я все сделал правильно. В общем поясните поясните по каждому пункту почему так и не как у меня, и что не верно
package com.javarush.task.task08.task0820;
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> result = new HashSet<Cat>();
Cat cat1 = new Cat();
Cat cat2 = new Cat();
Cat cat3 = new Cat();
Cat cat4 = new Cat();
result.add(cat1);
result.add(cat2);
result.add(cat3);
result.add(cat4);
return result;
}
public static Set<Dog> createDogs() {
Set<Dog> result = new HashSet<Dog>();
Dog dog1 = new Dog();
Dog dog2 = new Dog();
Dog dog3 = new Dog();
result.add(dog1);
result.add(dog2);
result.add(dog3);
return result;
}
public static Set<Object> join(Set<Cat> cats, Set<Dog> dogs) {
Set<Object> joinCD = new HashSet<Object>();
for (Cat cat : cats) {
joinCD.add(cat);
}
for (Dog dog : dogs) {
joinCD.add(dog);
}
return null;
}
public static void removeCats(Set<Object> pets, Set<Cat> cats) {
for (Cat cat : cats) {
for (Object pet : pets) {
if(pet.equals(cat)){
pets.remove(pet);
}
}
}
}
public static void printPets(Set<Object> pets) {
for (Object pet : pets) {
System.out.println(pet);
}
}
public static class Dog{
}
public static class Cat{
}
}