728x90
'Java에서는 Collection FreamWork를 제공하고 있는데 할당된 element를 읽는 경우 Iterator로 표준화하고 있다. 그렇기 때문에 Collection Interface에서 상속받는 List 또는 Set Interface에서 Iterator 메서드를 사용할 수 있다.' 아마 여기까지는 모두 알고 있는 내용일 것이다. 이번 포스팅은 두 구조의 차이 및 예제를 통한 사용방법에 대한 내용이다.
두 자료구조의 큰 차이점은 Iterator는 단방향 구조이고 ListIterator는 양방향 구조이다. 이 단방향과 양방향이 무엇을 의미하는지 두 자료구조의 사용예제를 통해 이해 해보자.
1. Iterator와 ListIterator의 차이
1) Iterator 예제 코드
import java.util.Iterator;
import java.util.LinkedList;
public class CodeExTest {
public static void main(String[] args) {
LinkedList<Integer> list = new LinkedList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
Iterator<Integer> iter = list.iterator();
while(iter.hasNext()) { // 다음 값을 가지고 있는 경우 true 반환
System.out.println(iter.next()); // 다음 값을 출력
}
}
}
// result
// 1 2 3 4
2) ListItertator 예제 코드
import java.util.LinkedList;
import java.util.ListIterator;
public class CodeExTest {
public static void main(String[] args) {
LinkedList<Integer> list = new LinkedList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
ListIterator<Integer> iter = list.listIterator();
while (iter.hasNext()) { // Iterator와 같다.
System.out.print(iter.next() + " ");
}
System.out.println();
while (iter.hasPrevious()) { // 이전 값을 가지고 있으면 true 반환
System.out.print(iter.previous() + " "); // 이전 값 출력
}
}
}
// result
// 1 2 3 4
// 4 3 2 1
- Iterator는 next 기능만 제공한다. 하지만 ListIterator는 previous 기능을 제공하기 때문에 next로 갔던 길을 previous로 돌아올 수 있다.
2. 특징
- 해당 자료구조의 가장 큰 특징은 필요한 위치의 노드를 읽는 경우 현재 위치의 앞뒤에 있다면 처음부터 검색하지 않아도 된다는 것이다. 이렇게 되면 로직을 구현할 때 복잡도가 O(1)이 된다.
728x90
'자기계발 > 알고리즘, 자료구조' 카테고리의 다른 글
Java] int와 long의 범위 (0) | 2023.05.03 |
---|---|
Java ] Deque(덱) 자료구조 스택과 큐 예제 (0) | 2022.07.06 |
Java ] if else와 switch 차이(초간단 설명) (0) | 2022.06.30 |
Java ] float와 double의 소숫점 길이 한계 (0) | 2022.06.27 |
비트 연산자 계산법 (0) | 2022.03.03 |