List와 Set을 사용할 때 데이터를 순회하기 위해 Iterator를 사용하는 경우가 많습니다.
드롭 생성기를 사용하면 순회 과정을 방해할 필요 없이 원하는 데이터를 한 번에 하나씩 꺼내서 처리하기만 하면 됩니다. 하지만 사용시에는 차이점이 있습니다.
List와 Set 모두 iterator()를 사용하여 반복자를 얻습니다. List의 경우 listIterator()를 통해 반복자를 얻을 수도 있습니다. 두 반복자는 때때로 호환되지 않습니다. Iterator와 ListIterator의 주요 차이점은 다음과 같습니다.
1. ListIterator에는 add() 메서드가 있습니다. ListIterator는 ListIterator에 추가할 수 없지만
2. ListIterator와 Iterator에는 모두 순차적인 역순회를 달성할 수 있는 hasNext() 및 next() 메서드가 있지만 ListIterator에는 달성할 수 있는 hasPrevious() 및 이전() 메서드가 있습니다. 역방향으로 이동합니다(순차적으로 앞으로 이동). 반복자는 할 수 없습니다.
3. ListIterator는 현재 인덱스 위치를 찾을 수 있으며 nextIndex() 및 PreviousIndex()는 이를 달성할 수 있습니다. Iterator에는 이 기능이 없습니다.
4. 둘 다 객체를 삭제할 수 있지만 ListIterator는 객체를 수정할 수 있으며 set() 메서드가 그렇게 할 수 있습니다. Iierator는 순회만 가능하며 수정할 수 없습니다.
이러한 ListIterator 기능 덕분에 LinkedList와 같은 List 데이터 구조에 대한 작업을 구현할 수 있습니다.
실제로 배열 객체는 반복자를 사용하여 구현할 수도 있습니다.
org.apache.commons.collections.iterators.ArrayIterator는 이 기능을 구현할 수 있습니다. 이전에 사용법을 언급한 적이 있습니다. 자세한 내용은 다음을 참조하세요. 일반적으로 Iterator를 사용할 수 있습니다. 레코드를 반복적으로 검색해야 하는 경우 ListIterator를 사용하여 기능을 확장할 수 있습니다(JDBC의 롤링 결과 집합과 약간 유사).