본문 바로가기

Java

[Java] Iterator, Listlterator, Enumeration

목차

  • Iterator, Listlterator, Enumeration
  • Iterator 쓰는 이유
  • Iterator의 장점
  • Iterator의 메서드
  • Iterator의 사용방법
  • Iterator 예제
  • Map과 Iterator의 관계

 

 

Iterator, Listlterator, Enumeration

  • 컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스
  • 핵심은 hasNext(확인)와 next(읽기) 메서드 
  • Enumeration은 Iterator의 구버전
  • Listlterator는 Iterator의 접근성을 향상시킨 것 (단방향 => 양방향) - previous( )

 

 

Iterator를 쓰는 이유

  • 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것
  • 컬렉션 마다 생긴 것(구조)이 달라서 요소를 읽어오는 방법이 다른데 그것을 표준화 한 것!!
  • 구조가 어떻게 되어있든 요소가 있는지 확인하고 읽어옴!!

 

 

 

Iterator의 장점

  • 표준화가 되어서 우리가 읽어오는 코드는 변경하지 않아도 된다.
  • 컬렉션 클래스마다 읽어오는 방법을 배우지 않아도 된다!

 

 

 

Iterator 인터페이스의 메서드

남궁성 유튜브 출처: https://www.youtube.com/watch?v=k5qxJ53RYNc&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=125

 

 

 

 

Iterator 사용방법

  • 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화한 것.
  • 컬렉션에 iterator( )를 호출해서 Iterator를 구현한 객체를 얻어서 사용.
  • Collection 인터페이스에서 가지고 있는 메서드이기 때문에 List, Set 인터페이스도 가지고 있다.
List list = new ArrayList(); // 다른 컬렉션으로 변경할 때는 이부분만 고치면 된다.
Iterator it = list.iterator();

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

 

 

예제

public class Iterator2 {

    public static void main(String[] args) {

        ArrayList list = new ArrayList();
        //HashSet list = new HashSet();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        list.add("5");

        Iterator it = list.iterator();

        while (it.hasNext()) { // 한번 읽으면 다시 읽을 수 없다.
            Object obj = it.next();
            System.out.println(obj);
        }

        //iterator는 일회용이라 다 쓰고 나면 다시 얻어와야 한다.
        it = list.iterator(); // 새로운 iterator 객체를 얻는다.

        while (it.hasNext()) { // 다시 읽어올 것이 없다.
            Object obj = it.next();
            System.out.println(obj);
        }
        for (int i = 0; i < list.size(); i++) {
            Object obj = list.get(i); // HashSet의 요소는 읽을 수 없다.
            System.out.println(obj);
        }
    }
}

 

 

 

Map과 Iterator

  • Map에는 iterator( )가 없다.
  • iterator는 Collection 인터페이스에 정의되어 있고, Map은 Collection의 자손이 아니다.
  • keySet( ), entrySet( ), values( )를 호출해야 한다.
Map map = new HashMap();
Set eSet = map.entrySet();
Iterator it = eSet.iterator();
//Iterator it = map.entrySet().iterator(); 한줄로 나타내기
        
while (it.hasNext()) {
    Object obj = it.next();
    System.out.println(obj);
}

 

'Java' 카테고리의 다른 글

[Java] Comparator와 Comparable 객체 정렬  (0) 2024.05.08
[Java] Arrays - 배열을 쉽게 다루고 싶다면  (0) 2024.05.07
[Java] Stack과 Queue  (0) 2024.05.07
[Java] LinkedList 특징  (0) 2024.05.06
[Java] 컬렉션 프레임워크, ArrayList  (0) 2024.05.05