[JAVA의 정석]Iterator, Enumeration, Map과 Iterator

2024. 1. 16. 21:39· 🎥Back/자바의 정석
목차
  1. 📂content
  2. 1. Iterator, ListIterator, Enumeration  
  3. 2. Map과 Iterator  
  4. 📣 comment

이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 

 

 

📂content

1. Iterator, ListIterator, Enumeration  

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

- Enumeration은 Iterator의 구버전

- ListIterator는 Iterator의 접근성을 향상시킨 것 (단방향 -> 양방향) 

 

 

⚝ Iterator 인터페이스의 메서드 

메서드 설명
boolean hasNext() 읽어 올 요소가 남아있는지 확인. 있으면 true, 없으면 false 반환
Object next() 다음 요소를 읽어온다.
next()를 호출하기 전에 hasNext()를 호출해서
읽어 올 요소가 있는지 확인하는 것이 안전
void remove() next()로 읽어 온 요소를 삭제.
next()를 호출한 다음에 remove()를 호출해야 함.(선택적 기능)
void forEachRemaining (Consumer<? super E> action) 컬렉션에 남아있는 요소들에 대해 지정된 작업(action)을 수행.
람다식을 사용하는 디폴트 메서드 (JDK1.8부터 추가)
- hasNext() (확인하기)와 next() (읽어오기)가 핵심! 
- ListIterator은 Next와 Previous 모두 존재. List인터페이스를 구현한 Collection에서만 사용. 잘 안 쓰임 

 

 

⚝  Enumeration 인터페이스의 메서드 

메서드 설명
boolean hasMoreElements() 읽어 올 요소가 남아있는지 확인. 있으면 true, 없으면 false 반환
Iterator의 hasNext()와 같다. 
Object nextElement() 다음 요소를 읽어 온다. nextElement()를 호출하기 전에 hasMoreElements()를 호출해서
읽어올 요소가 남아있는지 확인하는 것이 안전. Iterator의 next()와 같다. 

 

 

Iterator은 왜 필요할까?

 

 

 

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

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

List list = new ArrayList(); //다른 컬렉션으로 변경할 때는 이 부분만 고치면 된다.
Iterator it = list.iterator();
while(it.hasNext()){//boolean hasNext() 읽어올 요소가 있는지 확인
System.out.println(it.next()); //Object next() 다음 요소를 읽어옴
}

 

 

- Iterator라는 메소드는 Collection 인터페이스에 정의되어 있어서. Collection인터페이스의 자손인 List, Set이 모두 가지고 있는 메서드이다. 

 

 

 

⍟실습

더보기
package etc;
import java.util.ArrayList;
import java.util.Iterator;
public class Ex11_5 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
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은 1회용이라 다 쓰고 나면 다시 얻어와야 한다.
it = list.iterator();
while (it.hasNext()){
Object obj = it.next();
System.out.println(obj);
}
//아래 for문 같은 경우는 컬렉션은 ArrayList -> HashSet으로 바꾼다면 사용하지 못하는 코드이다.
//HashSet에는 get()이 없기 때문이다. 하지만 Iterator은 사용가능하다.
for(int i=0; i<list.size(); i++){
Object obj = list.get(i);
System.out.println(obj);
}
}//main
}

 

- Collection c = new HashSet();과 Set c = new HashSet();, HashSet c = new HashSet(); 모두 가능하다. 

하지만 참조변수를 Collection으로 할 경우 실제 구현클래스가 TreeSet()과 같은 경우로 바꿔야 할 때, 아래 코드들이 바뀌어도 상관이 없다. 그렇기 때문에 이러한 경우를 대비해 Collection을 사용하는 것이 좋다. 

 

 

 

 

 

 

2. Map과 Iterator  

- Map에는 iterator가 없다. keySet(), entrySet(), values()를 호출해야함. 

keySet() -> Set, entrySet() -> Set, values -> Collection으로 한 번 받고 나서 iterator을 호출해야 한다.  

 

//1
Set eSet = map.entrySet();
Iterator it = eSet.iterator();
//2
Map map = new HashMap();
...
Iterator it = map.entrySet().iterator(); //1번 코드를 한 줄로 합친 것

 

 

 

 

 

📣 comment

더보기

Iterator

https://m.blog.naver.com/writer0713/220877874725

 

 

 

출처

더보기

https://www.youtube.com/watch?v=oJlCC1DutbA&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp

저작자표시 비영리 변경금지 (새창열림)

'🎥Back > 자바의 정석' 카테고리의 다른 글

[JAVA의 정석]Comparator와 Comparable  (0) 2024.01.17
[JAVA의 정석]Arrays  (0) 2024.01.17
[JAVA의 정석]Stack과 Queue의 활용  (0) 2024.01.16
[JAVA의 정석]Stack과 Queue  (0) 2024.01.16
[JAVA의 정석]LinkedList  (0) 2024.01.16
  1. 📂content
  2. 1. Iterator, ListIterator, Enumeration  
  3. 2. Map과 Iterator  
  4. 📣 comment
'🎥Back/자바의 정석' 카테고리의 다른 글
  • [JAVA의 정석]Comparator와 Comparable
  • [JAVA의 정석]Arrays
  • [JAVA의 정석]Stack과 Queue의 활용
  • [JAVA의 정석]Stack과 Queue
i_zzy
i_zzy
기록 겸 공부 블로그입니다. 문제를 해결해 나아가는 과정을 기록하고 있어요. 잘못된 부분이 있으면 자유롭게 댓글 달아 주세요👍
Izzy's blog기록 겸 공부 블로그입니다. 문제를 해결해 나아가는 과정을 기록하고 있어요. 잘못된 부분이 있으면 자유롭게 댓글 달아 주세요👍
i_zzy
Izzy's blog
i_zzy
전체
오늘
어제
  • 분류 전체보기 (94)
    • 💻개발 (29)
      • 개발지식 (0)
      • 프로그램 설치 (3)
      • Git (3)
      • 오류 (4)
      • JAVA (5)
      • SQL (2)
      • React,Vue (5)
      • AWS (6)
    • ⚙️알고리즘 (30)
      • SQL (3)
      • Java (15)
    • 🎥Back (29)
      • 자바의 정석 (29)
    • 🌤️일상 (5)
      • 초록 스터디 (5)

블로그 메뉴

  • 홈
  • 글쓰기
  • 관리

인기 글

태그

  • Java
  • 자바의정석
  • AWS
  • sql
  • 알고리즘
  • 자바
  • 스레드
  • 프로그래머스
  • 백준
  • 자바의 정석

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
i_zzy
[JAVA의 정석]Iterator, Enumeration, Map과 Iterator
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.