# * Iterator, Iterable μ°¨μ΄μ
Iterator
, Iterable
μ μλ° μ»¬λ μ
μΈν°νμ΄μ€μμ μ 곡
# Iterable
Iterable
μ μνν μ μλ 컬λ μ
μ λνλΈλ€. μ΄ μΈν°νμ΄μ€λ₯Ό μμνκ² λλ©΄ κ°μ²΄λ for-each
loopλ₯Ό μ¬μ©ν μ μκ² ν΄μ€λ€.
(λ΄λΆμ μΌλ‘ iterator() λ©μλλ₯Ό κ°μ²΄μ νΈμΆν΄μ κ°λ₯)
List <String> persons = new ArrayList<>(Arrays.asList("A", "B", "C"));
for (String person: persons) {
System.out.println(person);
}
2
3
4
μμ μμ μμ μ¬μ©λ Listλ Collection
μΈν°νμ΄μ€λ‘ μ°Ύμ κ°κ²λλ©΄ μλμ κ°μ΄ iterable μΈν°νμ΄μ€
λ₯Ό μμνκ³ μλ€.
public interface Collection<E> extends Iterable<E> {
...
2
# Iterator
Iterator
μΈν°νμ΄μ€λ λ€λ₯Έ κ°μ²΄, λ€λ₯Έ μ’
λ₯μ 컬λ μ
μ μννκ² ν΄μ€μ μλ€. μ΄ μΈν°νμ΄μ€λ₯Ό μννκΈ° μν΄μλ hasNext()
+ next()
λ©μλλ₯Ό μ¬μ©ν΄μΌνλ€.
Iterator <Integer> iterator = Arrays.asList(1, 2, 3, 4, 5).iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
2
3
4
Collection
μΈν°νμ΄μ€λ₯Ό 보면 Iterator μΈν°νμ΄μ€λ₯Ό λ©μλλ₯Ό λ§λ€μ΄ μ¬μ©νκ³ μλκ±Έ λ³Ό μ μλ€.
Iterator<E> iterator();
for-each loopμμ λλ€λ₯Ό μ¬μ©ν΄μ Iterable
μμ Iterator
λ‘ μ»¨λ²ν
μ ν μ μλ€.
for (Integer i: (Iterable<Interger>) () -> iterator) {
System.out.println(i);
}
2
3