JAVA/자바의 정석

[자바의 정석 - 기초편] 11. (3) 스택 / 큐 / Iterator / Listlterator / Enumeration / Map

서영22 2023. 12. 7. 23:14

 스택 (stack) 

LIFO (Last In First Out) 구조 : 마지막에 저장된 것을 제일 먼저 꺼냄

 

- 저장 : push  /  추출 : pop

 

- 밑이 막힌 상자

 

- 배열로 만드는 게 유리

 

- 활용 : 수식계산, 수식 괄호검사, 워드프로세서의 undo/redo, 웹브라우저의 뒤로/앞으로

 

 

 큐 (queue) 

FIFO (First In First Out) 구조 : 제일 먼저 저장한 것을 제일 먼저 꺼냄

 

- 저장 : offer  /  추출 : poll

 

- 양끝이 뚫린 상자

 

- 링크드 리스트로 만드는 게 유리

 

- 인터페이스 ➔ 객체 생성 X

 

- 활용 : 최근 사용 문서, 인쇄작업 대기목록, 버퍼

 

 

 

 

 

 스택과 큐의 메서드 

 

 

 

 

 

 인터페이스를 구현한 클래스 찾기 

 

 

 

< 예제 1 >

 

 

 

 

< 예제 2 >

 

 

 

 

< 예제 3 >

 

 

 

 

 

 Iterator / Enumeration / Listlterator 

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

 

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

 

 

 

Iterator

 

컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스 (new)

 

메서드 설명
boolean hasNext() 읽어 올 요소가 남았는지? 있으면 true, 없으면 false
Object next() 다음 요소 읽어옴. next() 호출 전에 hashNext()를 호출해서 읽어 올 요소가 있는지 확인하는 것이 안전

 

 

 

Enumeration

 

Iterator의 구버전 (old)

 

메서드 설명
boolean hasMoreElements() 읽어 올 요소가 남았는지? 있으면 true, 없으면 false
Object nextElement() 다음 요소 읽어옴. next() 호출 전에 hashNext()를 호출해서 읽어 올 요소가 있는지 확인하는 것이 안전

 

 

 

ListIterator

 

Iterator의 접근성을 향상시킨 것 (단방향 ➔ 양방향)

 

 

 

< 예제 >

 

 

 

 

 Map과 Iterator 

Map에는 iterator()가 없음 ➔ keySet(), entrySet(), value() 호출

Map map = new HashMap();
      ...
Iterator it = map.entrySet().iterator();

// 위의 한줄을 두줄로 풀면
// Set eSet = map.entrySet();
// Iterator it = eSet.iterator();