public static void removeCats(Set<Object> pets, Set<Cat> cats) {
//напишите тут ваш код
Iterator <Object> iterator = pets.iterator();
Iterator <Cat> iterator2 = cats.iterator();
while (iterator.hasNext()){
Object animal = iterator.next();
for (Cat cat : cats){
if (cat.equals(animal))
iterator.remove();
Максим
20 уровень
Почему нельзя удалить объекты класса Сat через два while?
Решен
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
АндрейExpert
23 января 2019, 05:42
Зачем вообще два итератора?
Идёшь итератором (циклом foreach, стримом... да как угодно) по cats, для каждого вызываешь метод удаления из множества pets
0
Максим
23 января 2019, 11:26
Мне просто интересно, я же здесь учусь делать все, а не только сделал задачу кое-как и рад
+1
Максим
22 января 2019, 22:26
Я сначала сделал два итератора и пускал их
while (iterator.hasNext()){
Object animal = iterator.next();
while (iterator2.hasNext()){
Cat cat = iterator2.next();
if (cat.equals(animal))
iterator.remove();
Но так не работало. Почему?
Как только сменил на fot-each все заработало
0
--------Master
22 января 2019, 22:51
А где у тебя iterator2 обнуляется?
0
Максим
23 января 2019, 11:25
А как его обнулить? В лекциях такого не было
0
--------Master
23 января 2019, 12:43решение
Получение итератора, начиная с первого элемента
Этот цикл отработает, на следующей итерации iterator2.hasNext() сразу будет возвращать false, т.к. ты все элементы из него уже перебрал
+2
Максим
23 января 2019, 12:50
Это я понял уже из прошлого твоего комментария. Вопрос в другом, как его обнулить? Просто iterator = 0?
0
--------Master
23 января 2019, 12:54
Я тебе написал только что, даже привел конкретную строку из твоего же кода.
0