스택(Stack)
Stack의 사전적 정의는 '쌓다', '더미'라는 뜻으로, 택배 상하차를 할 때를 떠올리면 된다.
상자를 올릴 때는 위로 쌓아올리고, 물건을 내릴 때는 가장 위의 상자부터 내리는 구조와 같다.
즉 Stack은 LIFO(Last In First Out)의 구조로, 마지막에 들어간 값이 가장 먼저 출력되는 구조를 띄고 있다.
Stack의 사용
- 값을 입력할 때는 push() 사용
- 값을 출력할 때는 pop() 사용
- 값을 출력하지 않고 가장 마지막의 값을 확인하고 싶을 때는 peek() 함수 이용
출력 결과
-> 가장 마지막에 입력된 값이 가장 먼저 출력되는 역순의 구조를 띄고 있다.
큐(Queue)
Queue의 사전적 의미는 줄을 서서 기다리는 것을 의미하는데 매장에서 물건을 구입하기 위해 줄을 길게 기다리는 상황을 떠올리면 된다.
즉 Queue는 FIFO(First In First Out)의 구조로, 먼저 들어간 값이 가장 먼저 출력되는 구조이다.
큐를 사용할 때는 클래스가 아닌 인터페이스만 제공하므로 이 Queue 인터페이스를 구현한 클래스를 사용해야 한다.
1. LinkedList
- 값을 입력할 때는 add(), offer()을 사용
- 값을 출력할 때는 poll(), remove()를 이용
- 값을 출력하지 않고 가장 마지막의 값을 확인하고 싶을 때는 peek() 함수 이용
출력 결과
-> 가장 먼저 입력한 값이 가장 먼저 출력되는 순차적인 구조를 띄고 있다.
2. PriorityQueue
- 우선순위 큐는 저장된 순서에 관계없이 우선순위가 높은 것부터 꺼내는 특징이 있다. (오름차순)
출력 결과
-> 숫자가 작을수록 우선순위는 높아지기 때문에 가장 우선순위가 높은 1이 먼저 출력되었다.
만약 내림차순으로 출력하고 싶다면 아래의 식을 이용하면 된다.
Queue<Integer> queue=new PriorityQueue<>(Collections.reverseOrder());
'언어 > Java' 카테고리의 다른 글
[Java] int, String 배열의 정렬 방법 (0) | 2023.01.28 |
---|---|
[Java] 진수 변환을 도와주는 메서드 (0) | 2022.05.11 |
[Java] 순열(Permutation), 조합(Combination) (0) | 2021.12.23 |
[Java] 자바 컬렉션들의 시간 복잡도 (Big O) (0) | 2021.11.23 |
[Java] 형 변환을 도와주는 다양한 메서드 (0) | 2021.09.08 |