Пыталась решить с for each, не проходил по последнему пункту:
for (Integer elem : set) {
if (elem.compareTo(10) > 0) {
set.remove(elem);
}
}
Прочитав комментарии, переделала с итератором - все заработало:
Iterator<Integer> iterator = set.iterator();
while(iterator.hasNext()){
if (iterator.next()>10) iterator.remove();
}
Вопрос, почему нельзя реализовать с for each, если в лекциях было написано, что в данной конструкции неявно используется итератор. Или может есть какой-то способ удаления в цикле for each не вызывая метод remove из самой коллекции?
Елена
35 уровень
Почему нельзя использовать for each
Обсуждается
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia VolkovaJava Developer в DXCMaster
14 ноября 2019, 11:47
Потому что там он используется неявно, и у нас нет возможности явным образом вызвать именно его метод remove, а не метод коллекции.
0
Елена
14 ноября 2019, 13:07
Спасибо, нашла еще в следующей задаче вот такой способ - использовать копию:
Map<String, String> copy = new HashMap<>(map);
for (Map.Entry<String, String> pair : copy.entrySet()) {
if (pair.getValue().equals(value)) {
map.remove(pair.getKey());
}
}
Тоже самое можно с итератором сделать, верно?
Этот способ просто как вариант привели в задаче? или он более эффективен?
0