Java - Iterator, Listlterator, Enumeration

춤추는개발자·2022년 12월 2일
0

Java 정리

목록 보기
47/59

Iterator, Listlterator, Enumeration

  • 컬렉션에 저장된 데이터를 접근(읽기)하는데 사용되는 인터페이스
  • Enumeration은 구버전이고 Iterator는 신버전이다.
  • Listlterator는 Iterator의 접근성을 향상 시킨 것이다. 단방향에서 양방향으로 다음요소와 이전요소를 읽어올 수 있다.
  • 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것
  • 컬렉션에 iterator()를 호출해서 iterator를 구현한 객체를 얻어서 사용한다.
List list = new ArrayList(); // 다른 컬렉션일때는 이 부분만 변경
Iterator i = list.iterator(); // iterator() 메서드를 호출하면 그 반환 결과가 Iterator 객체

while(i.hasNext()){ // hasNext() 메서드로 읽을 요소가 있는지 확인 후 
     System.out.println(i.next()); // 있다면 next() 메서드로 읽어오기 
}
  • iterator()라는 메서드는 collection 인터페이스에 정의되어있는 거라서 List, Set이 사용가능
  • iterator()는 한번 다 읽고 나면 다시 호출해서 가지고 와야 한다.
Collection c = new ArryList();
Collection c = new HashSet();
HashSet hashset = new HashSet();
c.add(1);
c.add(2);
c.add(3);
.
.
.

위의 코드를 보면 객체를 생성할때 참조변수의 종류도 잘 정해야 한다. 만약 Collection c를 쓴다면 어떤 Collection을 구현한 클래스의 객체를 생성하더라도 Collection 인터페이스가 가지고있는 멤버만 사용하기 때문에 아래 코드를 확인하지 않아도 된다. 만약 참조변수가 변경된다면 사용할 ㄴ수 있는 멤버면수도 바뀌기 때문에 아래의 코드도 확인해야 한다. 객체를 생성할때 Collection을 구현한 멤버만 사용한다면 Collection 참조변수를 사용하는게 코드의 유연함을 가져올 수 있다.

Iterator 메서드

  • boolean hasNext() : 읽어 올 요소가 남아있는지 확인, 있으면 true, 없으면 false를 반환
  • Object next() : 다음 요소를 읽어 온다. next()를 호출하기 전에 hasNext()를 호출해서 읽어 올 요소가 있는지 확인하는 것이 안전함.

Enumeration 메서드

  • boolean hasMoreElements() : hasNext()와 같은 기능
  • Object nextElements() : next()와 같은 기능

Map과 Iterator

  • Map에는 iterator()가 없다. keySet(), entrySet(), values()를 호출해야 한다. 반환타입이 Set,Set,Collection을 가지는 위의 메서드를 호출하면서 iterator() 메서드를 호출할 수 있다.
Map map = new Map()
Iterator i = map.entrySet().iterator();

0개의 댓글