이 영역을 누르면 첫 페이지로 이동
Arc 블로그의 첫 페이지로 이동

Arc

페이지 맨 위로 올라가기

Arc

[Java] 3. Iterator

  • 2022.08.17 17:42
  • Language/Java
글 작성자: SeoArc

Iterator?

Iterator는 컬렉션에 저장된 요소에 접근하는데 사용되는 인터페이스이다.

Iterator의 구버전으로 Enumeration이 있고, 기능을 향상 시킨 ListIterator가 있다.

 

iterator()는 Collection 인터페이스에 정의된 메서드이므로 List와 Set에도 포함되어 있다.

 

Map Iterator 처리

Map 인터페이스를 구현한 컬렉션 클래스는 key와 value를 쌍으로 저장하고 있기 때문에 iterator()를 직접 호출할 수 없다. 대신 keySet()이나 entrySet()과 같은 메서드를 통해서 key와 value를 각각 따로 Set의 형태로 얻어 온 후에 다시 iterator()를 호출해야 Iterator를 얻을 수 있다.

Iterator it = map.entrySet().iterator();

 

Iterator 메서드

메서드 설명
boolean hasNext() 읽어 올 요소가 남아있는지 확인한다. 있으면 true, 없으면 false
Object next() 다음 요소를 읽어온다. next()를 호출하기 전에 hasNext()를 호출해서 읽어 올 요소가 있는지 확인하는 것이 좋다.
void remove() next()로 읽어 온 요소를 삭제한다. next()를 호출한 다음에 remove()를 호출해야한다.

 

Enumeration & ListIterator

  • Enumeration: Iterator의 구버전
    • Enumeration은 Collection Framework가 만들어지기 전에 사용하던 것으로, 이전 버전으로 작성된 소스와의 호환을 위해서 남겨 두고 있다. 따라서 웬만하면 Enumeration 대신 Iterator를 사용하는 것이 좋다.
  • ListIterator: Iterator에 양방향 조회기능추가(List를 구현한 경우만 사용가능)
    • ListIterator는 Iterator를 상속받아서 기능을 추가한 것으로, 컬렉션의 요소에 접근할 때 양방향으로의 이동이 가능하다.
    • ArrayList나 LinkedList와 같이 List인터페이스를 구현한 컬렉션에서만 사용할 수 있다.

 

ListIterator 메서드

메서드 설명
void add(Object o) 컬렉션에 새로운 객체(o)를 추가한다.
boolean hasNext() 읽어 올 다음 요소가 남아있는지 확인한다. 있으면 true, 없으면 false
boolean hasPrevious() 읽어 올 이전 요소가 남아있는지 확인한다. 있으면 true, 없으면 false
Object next() 다음 요소를 읽어온다. next()를 호출하기 전에 hasNext()를 호출해서 읽어 올 요소가 있는지 확인하는 것이 좋다.
Object previous() 이전 요소를 읽어온다. previous()를 호출하기 전에 hasPrevious()를 호출해서 읽어 올 요소가 있는지 확인하는 것이 좋다.
int nextIndex() 다음 요소의 index를 반환한다.
int previousIndex() 이전 요소의 index를 반환한다.
void remove() next() 또는 previous()로 읽어 온 요소를 삭제한다. 반드시 next()나 previous()를 먼저 호출한 다음에 이 메서드를 호출해야한다.
void set(Object o) next() 또는 previous()로 읽어 온 요소를 지정된 객체(o)로 변경한다. 반드시 next()나 previous()를 먼저 호출한 다음에 이 메서드를 호출해야한다.

'Language > Java' 카테고리의 다른 글

[Java] 아무 생각 없이 생성했는데 동일한 객체?  (0) 2023.03.09
[Java] abstract class vs interface  (0) 2023.01.20
[Java] stream vs for  (1) 2023.01.17
[Java] 2. List  (0) 2022.08.12
[Java] 1. Collections Framework  (0) 2022.08.11

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [Java] abstract class vs interface

    [Java] abstract class vs interface

    2023.01.20
  • [Java] stream vs for

    [Java] stream vs for

    2023.01.17
  • [Java] 2. List

    [Java] 2. List

    2022.08.12
  • [Java] 1. Collections Framework

    [Java] 1. Collections Framework

    2022.08.11
다른 글 더 둘러보기

정보

Arc 블로그의 첫 페이지로 이동

Arc

  • Arc의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (106)
    • Language (28)
      • C++ (0)
      • C# (0)
      • Java (28)
    • Algorithm (47)
      • Algorithm (15)
      • Data Structure (6)
      • PS (26)
    • Computer Science (22)
      • Design Pattern (1)
      • Network (14)
      • OS (7)
    • Game (0)
      • Unity (0)
    • Backend (3)
      • Spring (1)
      • JPA (2)
    • DB (0)
      • SQL (0)
    • DevOps (2)
      • AWS (0)
      • Docker (2)
      • Jenkins (0)
      • Nginx (0)
    • Software Engineering (4)
      • OOP (4)
    • AI (0)
      • Machine Learning (0)
    • Others (0)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 알고리즘
  • 네트워크
  • graph
  • network
  • 자바
  • algorithm
  • java
  • 그래프

나의 외부 링크

정보

SeoArc의 Arc

Arc

SeoArc

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © SeoArc. Designed by Fraccino.

티스토리툴바