스택과 큐(Stack & Queue)
스택은 클래스, 큐는 인터페이스로 구현되어있다
스택(Stack)
- LIFO구조 . 마지막에 저장된것을 제일 먼저 꺼낸다 후입선출
- 저장(push),추출(pop)
스택 메서드
- boolean empty() : 비었는지 확인
- Object peek() : Stack의 맨 위에 저장된 객체를 반환. pop과달리 객체를 꺼내지는 않는다
- Object pop() : Stack 의 맨 위에 저장된 객체를 꺼낸다
- Object push() : Stack에 객체를 저장한다
- int search(Object o) : 주어진 객체를 찾는다, 위치는 0이아닌 1부터 시작
큐(Queue)
- FIFO구조. 제일 먼저 저장한 것을 제일 먼저 꺼낸다 선입선출
- 저장(offer),추출(poll)
큐 메서드
- boolean add() : 지정된 객체를 Queue에 추가한다
- Object remove() : Queue에서 객체를 꺼내서 반환한다, 예외발생함
- Object element() : 삭제없이 요소를 읽어온다 peek과 달리 Queue가 비었을 때 NoSuchElementException 발생
- boolean offer(Object o) : Queue에 객체를 저장한다
- Object poll() : Queue에 객체를 꺼내서 반환 비었으면 null반환하고 예외발생 x
- Oject peek(): 삭제없이 요소를 읽어온다.
스택&큐 간단한 실습
스택&큐 의 활용
-
스택의 활용 예 : 수식계산, 수식괄호검ㅅ, 워드프로세서의 undo/redo
웹브라우저의 뒤로/앞으로
-
큐의 활용 예 : 최근사용문서, 인쇄작업 대기목록,버퍼
-
괄호 검증

-
명령어 저장


Iterator,ListIterator,Enumeration
lterator,Listlterator,Enumeration
- 컬렉션에 저장된 데이터를 접근하는데 사용되는 인터페이스
- Enumeration 은 Iterator의 구버전
- ListIterator 는 Iterator의 접근성을 향상 (단방향 -> 양방향)
메서드
- 확인 : boolean hasNext() : 읽어올 요소가 있는지 확인
- 읽기 : Object next() : 다음 요소를 읽어온다 hasNext로 확인후 사용하는게 좋다
사용하는이유 사용법
- 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화 한것
- list,set,map 다 읽는법이 다른데 이것을 하나로 표준화
- 컬렉션에 iterator()를 호출해서 iterator를 구현한 객체를 얻어 사용
List list = new ArrayList();
Iterator it = list.iterator();
while(it.hasNext()
syso(it.next());
}
Map과 Iterator
- Map에는 iterator()가 없다 . keySet(),entrySet(),values()를 호출 해야함
Map map = new HashMap();
//...
Iterator it = map.entrySet().iterator
Arrays
Arrays
- 배열을 다루기 편리한 메서드(static) 제공
- 배열의 출력 - toString()
- 배열의 복사 - copyOf(),copyOfRange()
- 배열채우기 - fill(),setAll()
- 배열의 정력과 검색 - sort(),이진탐색:binarySearch()
이진탐색을 하기위해서는 정렬을 먼저해줘야한다
- 다차원 배열의 출력 - deepToString()
- 다차원 배열의 비교 - deepEquals()
- 배열을 List로 변환 - asList(배열(가변 매개변수))
- 람다와 스트림 관련 - parallelXXX(),spliterator(),stream()
순차검색 과 이진검색(이분검색)
- 순차 검색 : 앞에서 부터 순서대로 찾는것
- 이진 검색 : 정렬된 배열을 검색함 , 반씩 나누어 크기를 비교하면서 탐색한다
Comparator와 Comparable
Comparator와 Comparable
- Comparable : 기본 정렬기준을 구현하는데 사용
- Comparator : 기본 정렬기준 외에 다른 기준으로 정룔하고자 할때 사용
- 객체 정렬에 필요한 메서드(정렬기준 제공)를 정의한 인퍼페이스
- compare(), compartTo()는 두 객체의 비교 결과를 반환
같으면 0, 오른쪽이 크면 음수, 작으면 양수
