Java Iterator, ListIterator, Enumeration

iy·2024년 1월 9일
0

Java-CollectionFramework

목록 보기
5/7

Iterator, ListIterator, Enumeration

  • 컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스(읽어오기)

    • Iterator인터페이스의 메서드
메서드설명
boolean hasNext()(확인)읽어 올 요소가 남아있는지 확인함 있으면 true, 없으면 false를반환
Object next()(읽기)다음 요소를 읽어옴 next()호출하기 전에 hasNext()를 호출해서 읽어 올 요소가 있는지 확인하는 것이 안전
void remove()next()로 읽어 온 요소를 삭제함 next()를 호출한 다음에 remove()를 호출해야 함(선택적 기능)
void forEachRemaining(Consumer<? super E> action)컬렉션에 남아있는 요소들에 대해 지정된 작업(action)을 수행함
람다식을 사용하는 디폴트 메서드(JDK1.8부터 추가)
  • Enumeration은 Iterator의 구버젼(거의 비슷)
    • Enumeration인터페이스의 메서드
메서드설명
boolean hasMoreElements()읽어 올 요소가 남아있는지 확인
있으면 true,없으면 false를 반환
Iterator의 hasNext()와 같음
Object nextElement()다음 요소를 읽어옴
hasElement()를 호출하기 전에 hasMoreElements()를 호출해서 읽어올 요소가 남아있는지 확인하는 것이 안전함
Iterator의next()와 같음
  • ListIterator는 Iterator의 접근성을 향상시킨 것(단방향->양방향)

  • 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것

  • 컬렉션에 iterator()를 호출해서 Iterator를 구현한 객체를 얻어서 사용

List list = new ArrayList(); // 다른 컬렉션으로 변경할 때는 이 부분만 고치면 됨
Iterator it = list.iterator();

while(it.hasNext()){ // boolean hasNext() 읽어올 요소가 있는지 확인
    System.out.println(it.next()); // Object next() 다음 요소를 읽어옴
}

Map과 Iterator

  • Map에는 iterator()가 없다.
    • keySet(), entrySet(), values()를 호출해야 함
public interface Collection {
    ...
    public Iterator iterator();
    ...
}
Map map = new HashMap();
...
Iterator it = map.entrySet(),iterator();

☃참고❄
자바의정석-Iterator, ListIterator, Enumeration

0개의 댓글