Добрый день! Посмотрите пожалуйста, и объясните в чем разница между
public static Set<Cat> createCats() {
      HashSet<Cat> result = new HashSet<Cat>();

      result.add(new Cat());
      result.add(new Cat());
      result.add(new Cat());
      result.add(new Cat());

      return result;
  }

  public static Set<Dog> createDogs() {
      HashSet<Dog> result = new HashSet<Dog>();
      Dog dog = new Dog();
      result.add(dog);
      result.add(dog);
      result.add(dog);


      return result;
  }