Java 컬렉션을 다룰 때, 요소를 순회하면서 안전하게 제거하거나 수정할 필요가 종종 있습니다. 이럴 때 유용하게 사용할 수 있는 것이 바로 Iterator입니다. Iterator는 컬렉션의 요소를 순회할 수 있는 표준화된 방법을 제공하여, 요소의 접근과 제거를 안전하고 효율적으로 처리할 수 있도록 합니다. 이번 포스트에서는 Iterator의 개념, 사용 방법, 그리고 주요 기능에 대해 알아보겠습니다.
Iterator란 무엇인가?
Iterator는 Java 컬렉션 프레임워크의 일부로, 컬렉션(예: List, Set, Map 등)의 요소를 순차적으로 접근할 수 있는 객체입니다. Iterator는 다음과 같은 세 가지 주요 메서드를 제공합니다:
- hasNext(): 컬렉션에 순회할 다음 요소가 있는지 여부를 확인합니다.
- next(): 컬렉션의 다음 요소를 반환합니다.
- remove(): Iterator가 마지막으로 반환한 요소를 컬렉션에서 제거합니다.
Iterator의 장점
- 안전한 요소 제거: Iterator를 사용하면 컬렉션을 순회하면서 요소를 안전하게 제거할 수 있습니다. 이는 for-each 루프나 인덱스 기반 루프를 사용할 때 발생할 수 있는 ConcurrentModificationException을 방지합니다.
- 일관된 인터페이스: Iterator는 모든 컬렉션에서 동일한 인터페이스를 제공하므로, 다양한 종류의 컬렉션을 일관되게 다룰 수 있습니다.
- 유연성: 컬렉션의 내부 구조에 관계없이 요소를 순회하고 제거할 수 있습니다.
Iterator 사용 방법
Iterator를 사용하는 기본적인 방법은 다음과 같습니다:
1. Iterator 생성
컬렉션 객체에서 iterator() 메서드를 호출하여 Iterator를 생성합니다.
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
Iterator<String> iterator = list.iterator();
2. 요소 순회
hasNext()와 next() 메서드를 사용하여 컬렉션의 요소를 순회합니다.
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
3. 요소 제거
remove() 메서드를 사용하여 현재 요소를 컬렉션에서 제거할 수 있습니다.
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
if (element.equals("banana")) {
iterator.remove();
}
}
위 코드에서 Iterator는 "banana" 요소를 안전하게 제거합니다.
Iterator 예제 코드
다음은 Iterator를 사용하여 컬렉션의 요소를 순회하고, 특정 조건에 따라 요소를 제거하는 예제 코드입니다:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorExample {
public static void main(String[] args) {
List<String> fruits = new ArrayList<>();
fruits.add("apple");
fruits.add("banana");
fruits.add("cherry");
fruits.add("date");
// Iterator 생성
Iterator<String> iterator = fruits.iterator();
// 요소 순회
while (iterator.hasNext()) {
String fruit = iterator.next();
System.out.println("Current fruit: " + fruit);
// 조건에 따라 요소 제거
if (fruit.equals("banana")) {
iterator.remove();
}
}
System.out.println("Updated fruits list: " + fruits);
}
}
이 예제에서 "banana" 요소는 조건에 따라 리스트에서 제거됩니다. 최종적으로 업데이트된 리스트는 "apple", "cherry", "date"를 포함합니다.
결론
Iterator는 Java 컬렉션을 순회하고 요소를 안전하게 제거할 수 있는 강력한 도구입니다. 이를 사용하면 컬렉션의 요소를 효율적이고 일관되게 다룰 수 있습니다. Java 컬렉션을 다룰 때 Iterator를 활용하여 코드의 안전성과 유연성을 높여보세요.
'JAVA' 카테고리의 다른 글
자바 람다식 쉽게 이해하기 (1) | 2024.09.25 |
---|---|
StringBuilder에 대한 가이드 (0) | 2024.08.07 |
쓰레드(Thread)란? (0) | 2024.07.25 |
객체지향(제네릭(Generic)) (0) | 2024.07.24 |
예외처리(Exception) (0) | 2024.07.24 |