Stack
: List 계열 클래스인 Vector 클래스를 상속받아 구현된 자료구조
- LIFO(Last In First Out) 구조로 되어 있다.
1. Stack 선언하기
/* Stack 인스턴스 생성 */
Stack<Integer> integerStack = new Stack<>();
2. 값 삽입하기
// push()
integerStack.push(1);
integerStack.push(2);
integerStack.push(3);
integerStack.push(4);
integerStack.push(5);
// Vector 클래스를 상속받았기 때문에 add()도 사용 가능하지만 push()를 사용하는 것이 좋다.
System.out.println(integerStack); // [1, 2, 3, 4, 5]
3. 요소 찾기
// search(): 인자로 받은 요소의 위치를 반환한다.
// 이 때 위치는 가장 상단이 1이다. (0부터 시작하지 않는다.)
// 존재하지 않는 요소일 경우 -1를 반환한다.
integerStack.search(5); // 1 반환
4. 값 꺼내기
// peek() : 해당 스택의 가장 상단에 있는 요소 반환
// pop() : 해당 스택의 가장 상단에 있는 요소 반환 후 제거
integerStack.peek();
integerStack.pop(); // 스택이 비어있는 경우 EmptyStackException 에러가 발생한다.
Queue
- FIFO(First In First Out) 구조이다.
- 큐는 Front와 Rear를 정하고, 한 곳에는 삭제만, 다른 한 곳에서는 삽입 연산만 처리한다.
- Queue 자체는 인터페이스이기 때문에 인스턴스 생성이 불가능하다.
- Queue 인터페이스를 상속받는 하위 인터페이스(Deque, BlockingQueue, BlockingDeque, TransferQueue 등)는 다양하지만, 대부분의 큐는 LinkedList를 이용한다.
1. Queue 선언하기
/* Queue 자체로는 인터페이스이기 때문에 인스턴스 생성이 불가능하다
Queue<String> que = new Queue<>(); 에러남 */
Queue<String> que = new LinkedList<>();
2. 값 삽입하기
// offer()
que.offer("first");
que.offer("second");
que.offer("third");
que.offer("fourth");
que.offer("fifth");
System.out.println(que); // [first, second, third, fourth, fifth]
3. 값 꺼내기
// peek(): 큐의 가장 앞에 있는 요소 반환(제거는 하지 않는다.)
// poll(): 큐의 가장 앞에 있는 요소 반환 및 제거
System.out.println("peek() : " + que.peek()); //first
System.out.println("peek() : " + que.peek()); //first
System.out.println(que); //5개 다 나온다
System.out.println("poll() : " + que.poll()); //first
System.out.println("poll() : " + que.poll()); //second
System.out.println(que);
'Java' 카테고리의 다른 글
[Java] nextInt() 사용 후 nextLine() 사용 시 주의할 점 (0) | 2024.09.01 |
---|---|
[Java] 13. Collection (2) List - LinkedList (0) | 2024.08.22 |
[Java] 13. Collection (1) List - ArrayList (0) | 2024.08.22 |
[Java] 13. Collection (0) | 2024.08.22 |
[Java] 12. 제네릭 프로그래밍 (0) | 2024.08.21 |