2015-08-11 3 views
0

У меня есть класс MyList, который реализует интерфейс Iterable. А вот toString() метод одного из моих классов:Усовершенствованный для цикла и итератора в Java

public String toString() { 
    StringBuilder sb = new StringBuilder(); 
    for (int i = 0; i < 4; i++) { 
     // First example using iterator 
     for (Iterator<Integer> itr = array[i].iterator(); itr.hasNext();) { 
      sb.append(itr.next() + " "); 
     } 
     // And the same result using enhanced for loop 
     for (int val : array[i]) { 
      sb.append(val + " "); 
     } 
    } 
    return sb.toString(); 
} 

Этот цикл перебирает узлы в моем списке:

for (int val : array[i]) { 
    sb.append(val + " "); 
} 

Как это цикл использует итератор?

ответ

1

Потому что ваш класс (MyList) реализует Iterable. Таким образом, он будет называть ваш метод iterator(), а затем с использованием методов hasNext() иListIterator он будет перебирать цикл for.

Refer: Using Enhanced For-Loops with Your Classes

1

Усовершенствованный цикл for работает для любого класса, который реализует Iterable. Он внутренне называет метод iterator(), реализованный этим классом, для получения Iterator и использует hasNext() и next() методы Iterator для итерации по элементам Iterator.