Itorator
컬렉션에 저장된 요소를 접근하는데 사용되는 인터페이스
public interface Iterator{
boolean hasNext();
Object next();
void remove();
}
public interface Collection{
...
public Iterator iterator();
...
}
컬렉션에 저장된 각 요서에 접근하는 기능을 가진 Iterator 인터페이스를 정의하고, Collection 인터페이스에는 Iterator를 구현한 클래스의 인스턴스를 반환하는 iterator()를 정의하고 있다.
List list = new ArrayList<>();
Iterator it = list.iterator();
while(it.hasNext()){ // boolean hasNext() 읽어올 요소가 있는지 확인
System.out.println(it.next()); // Object next() 다음 요소를 읽어옴
it.remove() // next()로 가져온 값을 list에서 삭제함 (next()없이 사용 불가)
}
여기에서 remove()메소드는 it.next()로 값을 가져오지 않고서는 사용이 불가능 하다.(IllegalStateException)
Iterator는 3개의 메소드가 끝이라 사용하기 쉽지만 처음부터 끝까지 단방향 반복만 가능하고, 값의 변경및 추가가 불가능하며, 대량의 데이터를 제어할때 느리다는 단점이 있다.
ListIterator
Iterator에 양방향 조회기능을 추가(List 를 구현한 경우에만 사용 가능)
ListIterator는 Iterator 인터페이스를 상속받아 사용하며, 컬렉션 요소의 대체, 추가, 인덱스 검색등이 가능하다.
리턴 타입 | 메소드 | 설명 |
void | add(E e) | 해당 리스트(list)에 전달된 요소를 추가함. (선택적 기능) |
boolean | hasNext() | 이 리스트 반복자가 해당 리스트를 순방향으로 순회할 때 다음 요소를 가지고 있으면 true를 반환하고, 더 이상 다음 요소를 가지고 있지 않으면 false를 반환함. |
boolean | hasPrevious() | 이 리스트 반복자가 해당 리스트를 역방향으로 순회할 때 다음 요소를 가지고 있으면 true를 반환하고, 더 이상 다음 요소를 가지고 있지 않으면 false를 반환함. |
E | next() | 리스트의 다음 요소를 반환하고, 커서(cursor)의 위치를 순방향으로 이동시킴. |
int | nextIndex() | 다음 next() 메소드를 호출하면 반환될 요소의 인덱스를 반환함. |
E | previous() | 리스트의 이전 요소를 반환하고, 커서(cursor)의 위치를 역방향으로 이동시킴. |
int | previousIndex() | 다음 previous() 메소드를 호출하면 반환될 요소의 인덱스를 반환함. |
void | remove() | next()나 previous() 메소드에 의해 반환된 가장 마지막 요소를 리스트에서 제거함. (선택적 기능) |
void | set(E e) | next()나 previous() 메소드에 의해 반환된 가장 마지막 요소를 전달된 객체로 대체함. (선택적 기능) |
'자바' 카테고리의 다른 글
[자바] Tree Set 개념 및 활용 (0) | 2023.01.28 |
---|---|
[자바] Map과 Iterator (0) | 2023.01.28 |
[자바] static 메모리 (0) | 2023.01.20 |
[자바] 기본형 매개변수와 참조형 매개변수 (객체지향) (0) | 2023.01.19 |
[자바] 힙(heap)과 스택(stack) 메모리 구조 (0) | 2023.01.18 |