Iterator 인터페이스는 컬렉션의 요소를 순회하고 선택적으로 요소를 제거할 수 있는 메소드를 정의하는 자바의 인터페이스입니다. 이 인터페이스는 자바 컬렉션 프레임워크의 일부로 제공되며, 다양한 자료 구조를 효율적으로 순회하고 조작하는 데 사용됩니다.
Iterator 인터페이스는 hasNext(), next(), remove() 세 가지 메소드를 정의합니다.
- hasNext(): 이 메소드는 다음 요소가 있으면 true를 반환하고, 없으면 false를 반환합니다.
- next(): 이 메소드는 다음 요소를 반환합니다.
- remove(): 이 메소드는 마지막으로 반환된 요소를 제거합니다. next()를 호출한 후에만 호출 가능합니다.
Iterator 인터페이스는 자바의 ArrayList, LinkedList, HashSet, HashMap 등과 같은 많은 컬렉션 클래스에서 구현됩니다. 이를 통해 우리는 컬렉션의 요소에 접근하고 조작하는 일관된 방법을 제공받을 수 있습니다.
Iterator 인터페이스를 구현한 컬렉션 클래스들은 for-each 루프에서 사용할 수 있습니다. 또한, Iterator를 직접 사용하여 컬렉션의 요소를 탐색할 수 있습니다.
Kotlin에서도 Iterator 인터페이스를 지원하며, 자바와 사용 방법이 동일합니다. 하지만 Kotlin에서는 for-each 루프 대신 for 루프나 함수형 프로그래밍 기법을 사용하는 것이 더욱 적합하다고 평가됩니다.
다음은 ArrayList 컬렉션을 사용하여 Iterator 인터페이스를 사용하는 예시입니다.
<JAVA>
import java.util.ArrayList;
import java.util.Iterator;
public class IteratorExample {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Orange");
// Iterator 인터페이스를 사용하여 컬렉션 순회
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
// Iterator를 사용하여 요소 제거
iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
if (element.equals("Banana")) {
iterator.remove();
}
}
// 요소가 제거된 후의 리스트 출력
for (String fruit : list) {
System.out.println(fruit);
}
}
}
위의 예시에서는 ArrayList를 생성하고 몇 개의 요소를 추가한 다음, iterator() 메소드를 사용하여 Iterator 객체를 얻습니다. 그런 다음 hasNext()와 next() 메소드를 사용하여 컬렉션의 요소를 순회하고 출력합니다.
또한, 두 번째 반복문에서는 Iterator를 다시 얻어온 후 remove() 메소드를 사용하여 "Banana"라는 요소를 제거합니다. 그 후에는 "Banana"가 제거된 후의 리스트를 출력합니다.
<Kotlin>
fun main() {
val list = arrayListOf("Apple", "Banana", "Orange")
// Iterator 인터페이스를 사용하여 컬렉션 순회
val iterator = list.iterator()
while (iterator.hasNext()) {
val element = iterator.next()
println(element)
}
// Iterator를 사용하여 요소 제거
val removeIterator = list.iterator()
while (removeIterator.hasNext()) {
val element = removeIterator.next()
if (element == "Banana") {
removeIterator.remove()
}
}
// 요소가 제거된 후의 리스트 출력
for (fruit in list) {
println(fruit)
}
}
위의 예시에서는 arrayListOf 함수를 사용하여 ArrayList를 생성하고 몇 개의 요소를 추가합니다. 그런 다음 iterator() 메소드를 사용하여 Iterator 객체를 얻습니다. hasNext()와 next() 메소드를 사용하여 컬렉션의 요소를 순회하고 출력합니다.
또한, 두 번째 반복문에서는 Iterator를 다시 얻은 후 remove() 메소드를 사용하여 "Banana"라는 요소를 제거합니다. 그 후에는 "Banana"가 제거된 후의 리스트를 출력합니다.
'프로그래밍 언어 > Java 기초' 카테고리의 다른 글
[JAVA] StringBuilder와 StringBuffer의 차이점 (0) | 2024.07.05 |
---|