Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > return прямо из foreach


Автор: rapik 6.4.2009, 14:42
Привет!

Не будет ли проблем с таким методом? Итератор может не отработать до конца - там неявно что-то происходит при выполнении "return sheet;"?

Код

    public Sheet findSheet(String name)
      {
        for (Sheet sheet : sheets)
          {
            if (sheet.getName().equals(name))
              return sheet;              
          }
        return null;
      }

Автор: jcyber 6.4.2009, 15:22
Цитата

...не будет ли проблем с таким методом?..

Быть не должно, метод закончил свою работу, как только выполнится
Код

sheet.getName().equals(name)

Автор: LSD 6.4.2009, 16:10
Цитата(rapik @  6.4.2009,  14:42 Найти цитируемый пост)
Итератор может не отработать до конца - там неявно что-то происходит при выполнении "return sheet;"?

А почему вообще итератор обязан доходить до конца списка?

Автор: Samotnik 6.4.2009, 16:17
Цитата(rapik @  6.4.2009,  13:42 Найти цитируемый пост)
Итератор может не отработать до конца - там неявно что-то происходит при выполнении "return sheet;"?

ну и что ? 
Он дойдет то того до чего нужно, не обязательно до конца  smile 

Автор: SoulKeeper 6.4.2009, 16:44
А потом на него не останется ссылок и его скушает ГЦ.

Автор: rapik 6.4.2009, 18:40
Спасибо.

Просто при "открытом" итераторе нельзя добавлять в коллекцию (вылезет исключение):

Код

ArrayList<String> list = new ArrayList<String>();
list.add("AAA");
list.add("BBB");
for (String el : list)
  {
    list.add("CCC");
  }


Всё, разобрался, это итератор следит за изменениями и исключение вылезает не при добавлении, а тут:
Код
for (String el : list)


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)