โจQueue ๋ ๋ฌด์์ธ๊ฐ์?
ํด๋์ค๋ก ๊ตฌํ๋ ์คํ๊ณผ๋ ๋ฌ๋ฆฌ ์๋ฐ์์ ํ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ ๋ณ๋์ ์ธํฐํ์ด์ค ํํ๋ก ์ ๊ณต๋๋ค.Queue๋ ์ฌ์ ์ ์ผ๋ก "์ค์ ์๋ค" ๋ฅผ ์๋ฏธํ๋ฉฐ, Stack๊ณผ ๋ฐ๋๋ก ์ผ์์์ ๋ ์ดํดํ๊ธฐ ์ฌ์ด ๊ฐ๋ ์ด๋ค.์ด๋ฌํ Queue ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ๋ ํ์ ์ธํฐํ์ด์ค๋ ๋ค์๊ณผ ๊ฐ๋ค.
- Deque<E>
- BlockingDeque<E>
- BlockingQueue<E>
- TransferQueue<E>
Queue ์ธํฐํ์ด์ค๋ฅผ ์ง๊ฐ์ ์ ์ผ๋ก ๊ตฌํํ ํด๋์ค๋ ์๋นํ ๋ง์ง๋ง, ๊ทธ์ค์์๋ Deque ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ LinkedList ํด๋์ค๊ฐ ํ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ๋ ๋ฐ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ค.
ํ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ ๋จผ์ ๋ค์ด์จ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋๊ฐ๋ ํ์ ์ผ๋ช FIFO(First-In,First-Out) ๋ฐฉ์์ด๋ค.
์ฆ, ๊ฐ์ฅ ๋จผ์ ์ ์ฅ๋(push) ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ๋จผ์ ์ธ์ถ(pop)๋๋ ๊ตฌ์กฐ์ด๋ค.
๋ณดํต ์ปดํจํฐ ๋ฒํผ์์ ์ฃผ๋ก ์ฌ์ฉ, ์ฌ๋ฌ ๊ฐ๊ฐ ํ๊บผ๋ฒ์ ์ ๋ ฅ์ด ๋ค์ด์ฌ ๋ ๋๊ธฐ์ด์ ๋ง๋ค์ด ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ ๋ ์ฌ์ฉ์ด ๋๋ค.
โจQueue ์ ์ธ
import java.util.LinkedList;
import java.util.Queue;
Queue<Integer> queue = new LinkedList<Integer>(); // Integer ํ์
์ผ๋ก ์ ์ธ
Queue<Integer> queue = new LinkedList<>(); // new๋ถ๋ถ ํ์
์๋ต ๊ฐ๋ฅ
Queue<Integer> queue = new LinkedList<Integer>(Arrays.asList(1,2,3)); // ์ ์ธ ๋ฐ ์ด๊ธฐ๊ฐ ์ธํ
Queue<String> queue = new LinkedList<>(); // String ํ์
์ผ๋ก ์ ์ธ
Queue<Character> queue = new LinkedList<Character>(); // Character ํ์
์ผ๋ก ์ ์ธ
Queue ์ธํฐํ์ด์ค๋ ํ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํํํ๊ธฐ ์ํด, ๋ค์๊ณผ ๊ฐ์ Collection ์ธํฐํ์ด์ค ๋ฉ์๋๋ง์ ์์๋ฐ์ ์ฌ์ฉํ๋ค.
๋ฉ์๋ | ์ค๋ช |
queue.add(1); | ํ์ ๋งจ ๋ค์ ์ ๋ฌ๋ ์์๋ฅผ ์ฝ์
ํ๋ค. ์ฝ์ ์ ์ฑ๊ณตํ๋ฉด true, ์ฝ์ ์คํจ์ IllegalStateException์ ๋ฐ์์ํด. |
queue.offer(2); | ํ์ ๋งจ ๋ค์ ์ ๋ฌ๋ ์์๋ฅผ ์ฝ์ ํจ. |
queue.peek(); | ํ์ ๋งจ ์์ ์๋(์ ์ผ ๋จผ์ ์ ์ฅ๋) ์์๋ฅผ return ๋ง์ฝ ํ๊ฐ ๋น์ด ์์ผ๋ฉด null์ return |
queue.poll(); | ํ์ ๋งจ ์์ ์๋(์ ์ผ ๋จผ์ ์ ์ฅ๋) ์์๋ฅผ return ํ, ํด๋น ์์๋ฅผ ํ์์ ์ ๊ฑฐํจ. ๋ง์ฝ ํ๊ฐ ๋น์ด ์์ผ๋ฉด null์ return |
queue.remove(); | ํ์ ๋งจ ์์ ์๋(์ ์ผ ๋จผ์ ์ ์ฅ๋) ์์๋ฅผ ์ ๊ฑฐํจ. |
queue.clear(); | ํ ์ด๊ธฐํ (๋ชจ๋ ์์ ์ ๊ฑฐ) |
โจQueue ์์
import java.util.LinkedList;
import java.util.Queue;
public class Solution {
public static void main(String[] args) {
Queue<Integer> queue = new LinkedList<>();
// ๊ฐ ์ถ๊ฐ , ์ฑ๊ณต์ true ์คํจ์ IllegalStateException ๋ฐ์
queue.add(1);
System.out.println(queue); // [1]
System.out.println(queue.add(2)); // true
// ๊ฐ ์ถ๊ฐ
queue.offer(3);
System.out.println(queue); // [1, 2, 3]
// ๋งจ ์(์ ์ผ ๋จผ์ ์ ์ฅ๋) ๊ฐ return, ๊ฐ์ด ์์์ null return
System.out.println(queue.peek()); // 1
System.out.println(queue); // [1, 2, 3]
// ๋งจ ์(์ ์ผ ๋จผ์ ์ ์ฅ๋) ๊ฐ return ํ ํด๋น ๊ฐ์ ํ์์ ์ ๊ฑฐํจ.
System.out.println(queue.poll()); // 1
System.out.println(queue); // [2, 3]
// ๋งจ ์(์ ์ผ ๋จผ์ ์ ์ฅ๋) ๊ฐ์ ์ ๊ฑฐ
queue.remove();
System.out.println(queue); // [3]
// ํ ์ด๊ธฐํ (๋ชจ๋ ๊ฐ์ด ์ ๊ฑฐ๋๋ค.)
queue.clear();
System.out.println(queue); // []
}
}
'๊ฐ๋ฐ์ธ์ด > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ๋๋ฌธ์, ์๋ฌธ์ ๋ณํ (to UpperCase, to LowerCase) (0) | 2022.05.05 |
---|---|
[Java] indexOf() ํน์ ๋ฌธ์ ์์น ์ฐพ๋ ๋ฐฉ๋ฒ (1) | 2022.04.25 |
[Java] Stack ํด๋์ค ์ค๋ช ๋ฐ ์์ (1) | 2022.04.23 |
[Java] HashMap (key ๊ฐ ๊ฐ์ ธ์ค๊ธฐ) (0) | 2022.04.22 |
[Java] ์ ๊ท ํํ์ ์ฌ์ฉ๋ฐฉ๋ฒ (Pattern, Matcher) (0) | 2022.04.18 |