본문 바로가기

Programing/Java

[Java] Iterator

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
반응형