반응형
Java의 iterator(반복자?)는 컬렉션의 기본 구현을 노출하지 않고 해당 요소에 순차적으로 액세스하여 컬렉션을 탐색하거나 반복할 수 있게 해주는 개체입니다. 특정 컬렉션 유형(예: ArrayList, HashSet, LinkedList 등)에 관계없이 요소에 액세스하는 통일된 방법을 제공합니다.
- Iterable 인터페이스: 'Iterable' 인터페이스는 Java에서 반복자를 사용하기 위한 기반을 형성합니다. 여기에는 컬렉션의 요소에 대한 반복자를 반환하는 'iterator()'라는 단일 메서드가 포함되어 있습니다.
- Iterator 인터페이스: Iterator 인터페이스는 반복자 자체를 나타내며 컬렉션을 순회하는 메서드를 제공합니다.
- boolean hasNext(): 컬렉션에 다른 요소가 있는지 확인합니다.
- E next(): 컬렉션의 다음 요소를 검색합니다.
- void Remove(): 기본 컬렉션에서 next()가 반환한 마지막 요소를 제거합니다(선택적 작업).
- 사용법:
- iterator를 사용하려면 먼저 iterator() 메서드를 사용하여 컬렉션에서 iterator를 가져옵니다.
- 그런 다음 hasNext()를 사용하여 추가 요소가 있는지 확인하고 next()를 사용하여 각 요소에 순차적으로 액세스합니다.
- Fail-Fast와 Fail-Safe:
- Java 컬렉션에는 오류 방지 또는 오류 방지 반복자가 있을 수 있습니다.
- Fail-Fast(빠른 실패): 반복 중에 동시 수정(예: 요소 추가 또는 제거)으로 인해 ConcurrentModificationException이 발생합니다.
- Fail-Safe(오류 방지): 반복 중 수정으로 인해 예외가 발생하지 않습니다. 반복자는 컬렉션의 복제된 복사본이나 별도의 복사본에서 작동합니다.
ArrayList<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
// Using Iterator
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
실행 결과 :
이 예는 iterator를 사용하여 'ArrayList'를 탐색하는 방법을 보여줍니다. hasNext()를 사용하여 다른 요소가 있는지 확인하고 더 이상 요소가 없을 때까지 next()를 사용하여 각 요소를 검색합니다.
iterator는 컬렉션의 내부 구조를 캡슐화하면서 다양한 컬렉션의 요소에 액세스하는 표준 방법을 제공하므로 Java에서 컬렉션 작업을 위한 기본 도구가 됩니다.
반응형
'프로그래밍 > 자바' 카테고리의 다른 글
[Java] 람다(lambda) (0) | 2024.01.09 |
---|---|
[Java] 메소드 오버로딩, 오버라이딩 (1) | 2024.01.04 |
[Java] 상속, protected, static, super (0) | 2024.01.04 |
[Java] 자바 네이밍 규칙 (1) | 2023.12.26 |