728x90
반응형
[Java] Iterator
Iterator
-> 노드의 주소를 직접 사용자에게 제공하는 대신 그것을 private 멤버로 wrapping하고 있으면서 사용자가 필요로 하는 일을 (노드에 저장된 데이터를 액세스 하거나 한 칸 전진하는 일 등) 해주는 public method를 가진 객체이다.
사용방법
Iterator<String> iter = aList.iterator();
while( iter.hasNext() ) {
// Iterator의 hasNext() 메서드는 연결리스트의 끝에 도달하면 false를 반환하며,
// next() 메서드는 현재 노드에 저장된 데이터를 반환하고 자신은 한 칸 전진한다.
String str = iter.next();
// do something with str
}
java.util이 Iteraor<E> 인터페이스를 정의
Method | Behavior |
boolean hasNext() | Returns true if the next method returns a value. |
E next() | Returns the next element. If there are no more elements, throws the NoSuchElementException. |
void remove() | Removes the last element returned by the next method |
연결리스트에서의 Iterator
- Iterator는 개념적으로는 연결리스트의 노드와 노드 사이를 가리킨다.
- 초기상태의 iterator는 첫 번째 노드의 앞 위치를 가리킨다.
- next() 메서드는 한 칸 전진하면서 방금 지나친 노드의 데이터를 반환
- hasNext() 메서드는 다음 노드가 존재하면 true, 그렇지 않으면 false를 반환한다.
- remove() 메서드는 가장 최근에 next() 메서드로 반환한 노드를 삭제한다.
예시코드
public static void removeDivisibleBy(LinkedList<Integer> aList, int div) {
Iterator<Integer> iter = aList.iterator();
while( iter.hasNext() ) {
int nextInt = iter.next();
if( nextInt % div == 0 ) {
iter.remove();
}
}
}
728x90
반응형
'Programing > Java' 카테고리의 다른 글
[Java] String,StringBuffer,StringBuilder 메서드 정리 (0) | 2022.07.20 |
---|---|
[Java] 이중연결리스트와 ListIterator 인터페이스 (0) | 2021.01.13 |
[Java] 리스트 (0) | 2021.01.10 |
[Java] List 관련 메서드 (0) | 2021.01.04 |
[Java] Generic Programming (0) | 2021.01.04 |