Объясните пожалуйста. По заданию мне нужно было удалить все объекты типа Cat из множества pets. Когда я пытался проходить по основному множеству и удалять значения - вылетала ошибка ConcurrentModificationException. Но если скопировать основное множество в временное и пройтись по временному а удалять именно из основного то всё работает. Только не могу понять почему, мы копируем объекты и передаём ссылки на эти объекты в новое множество соответственно новое множество, должно вести к тем же объектам что и основное и программа не должна работать.
Я понимаю, что я что-то но понимаю))) объясните пожалуйста.
public static void removeCats(Set<Object> pets, Set<Cat> cats) {
//напишите тут ваш код
Set<Object> copyPets = new HashSet<>(pets);
Iterator<Object> iterator = copyPets.iterator();
while (iterator.hasNext()) {
Object getPet = iterator.next();
for (Cat cat : cats) {
if (getPet == cat) {
pets.remove(getPet);
}
}
}
}