โ Queue
Queue : ์ค์ ์ง์ด์ ์์๋๋ก ์ฒ๋ฆฌ๋๋ ์๋ฃ๊ตฌ์กฐ
ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ผ์์ ์ผ๋ก ์์๋๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ๋ก ์คํ๊ณผ๋ ๋ค๋ฅด๊ฒ, FIFO ( First In First Out )์ ํํ์ด๋ค.
์ฆ, ๋จผ์ ๋ค์ด์จ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ๋จผ์ ๋๊ฐ๋ ๊ตฌ์กฐ์ด๋ค.
๐กQueue์ ํน์ง
1. ๋จผ์ ๋ค์ด๊ฐ ์๋ฃ๊ฐ ๋จผ์ ๋์ค๋ FIFO ๊ตฌ์กฐ
2. ํ๋ ํ์ชฝ ๋์ front๋ก ์นญํ์ฌ ์ญ์ ์ฐ์ฐ๋ง ์ํ
3. ๋ค๋ฅธ ํ์ชฝ ๋์ rear๋ก ์นญํ์ฌ ์ฝ์ ์ฐ์ฐ๋ง ์ํ
4. ๊ทธ๋ํ์ ๋์ด ์ฐ์ ํ์(BFS)์์ ์ฌ์ฉ
5. ์ปดํจํฐ ๋ฒํผ์์ ์ฃผ๋ก ์ฌ์ฉ, ๋ง๊ตฌ ์ ๋ ฅ์ด ๋์์ผ๋ ์ฒ๋ฆฌ๋ฅผ ํ์ง ๋ชปํ ๋, ๋ฒํผ(ํ)๋ฅผ ๋ง๋ค์ด ๋๊ธฐ ์ํด
Queue ์ฌ์ฉ๋ฒ
Queue ์ ์ธ
import java.util.LinkedList;
import java.util.Queue;
Queue<Integer> queue = new LinkedList<>(); // intํ queue ์ ์ธ, linkedlist ์ด์ฉ
Queue<String> queue = new LinkedList<>(); // Stringํ queue ์ ์ธ, linkedlist ์ด์ฉ
์๋ฐ์์ ํ๋ LinkedList๋ฅผ ํ์ฉํ์ฌ ์์ฑํด์ผ ํ๋ค. ๊ทธ๋ ๊ธฐ์ Queue์ LinkedList๊ฐ ๋ค import ๋์ด ์์ด์ผ ํจ.
Queue<Element> queue = new LinkedList<>() ๋ก ์ ์ธํ๋ฉด ๋๋ค.
Queue ๊ฐ ์ถ๊ฐ
Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(2);
queue.offer(3);
Queue์ ๊ฐ์ ์ถ๊ฐํ๊ณ ์ถ๋ค๋ฉด add(value) ๋๋ offer(value) ์ฌ์ฉํ๋ฉด ๋๋ค.
add(value)์ ๊ฒฝ์ฐ ์ฝ์ ์ ์ฑ๊ณตํ๋ฉด true ๋ฐํ, ํ์ ์ฌ์ ๊ณต๊ฐ์ด ์์ด์ ์คํจํ๋ฉด IllergalStateException ๋ฐ์
Queue์ ๊ฐ์ ๊ณ์ํด์ ์ถ๊ฐํด๋๊ฐ๋ค๋ฉด ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ํํ๋ก ๋ฐ์ดํฐ๊ฐ ์์ด๊ฒ ๋๋ค.
Queue ๊ฐ ์ญ์
Queue<Integer> queue = new LinkedList<>();
queue.offer(1);
queue.offer(2);
queue.offer(3);
queue.poll(); // queue์ ์ฒซ๋ฒ์งธ ๊ฐ์ ๋ฐํํ๊ณ ์ ๊ฑฐ, ๋น์ด์๋ค๋ฉด null
queue.remove(); // queue์ ์ฒซ๋ฒ์งธ ๊ฐ ์ ๊ฑฐ
queue.clear(); // queue ์ด๊ธฐํ
queue์์ ๊ฐ์ ์ ๊ฑฐํ๊ณ ์ถ๋ค๋ฉด poll() ์ด๋ remove() ์ฌ์ฉํ๋ฉด ๋๋ค.
poll() ๋ฉ์๋ : ํ๊ฐ ๋น์ด์์ผ๋ฉด null ๋ฐํ.
๊ฐ์ ์ญ์ ํ๊ฒ ๋๋ฉด ๊ฐ์ฅ ์์ชฝ์ ์๋ ์์์ ๊ฐ์ด ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ ๊ฑฐ๋๋ค.
queue์ ๋ชจ๋ ์์๋ฅผ ์ ๊ฑฐํ๋ ค๋ฉด clear()๋ฅผ ์ฌ์ฉ
Queue์์ ๊ฐ์ฅ ๋จผ์ ๋ค์ด๊ฐ ๊ฐ ์ถ๋ ฅ
Queue<Integer> queue = new LinkedList<>();
queue.offer(1);
queue.offer(2);
queue.offer(3);
queue.peek(); // queue์ ์ฒซ๋ฒ์งธ ๊ฐ ์ฐธ์กฐ
Queue์์ ์ฒซ๋ฒ์งธ๋ก ์ ์ฅ๋ ๊ฐ์ ์ฐธ์กฐํ๊ณ ์ถ๋ค๋ฉด peek() ๋ฉ์๋ ์ฌ์ฉ
'๐ ์ฝ๋ฉํ ์คํธ > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA][์๊ณ ๋ฆฌ์ฆ] BFS (0) | 2022.11.08 |
---|---|
[JAVA][์๊ณ ๋ฆฌ์ฆ] ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ( ์ ํ ์ฝ์ ๋ฒ๋ธ ) (0) | 2022.11.07 |
[JAVA] Stack ์ ๋ฆฌ (0) | 2022.11.05 |
[JAVA] BigDecimal ์ ๋ฆฌ (0) | 2022.11.05 |
[JAVA][์๊ณ ๋ฆฌ์ฆ] DFS ( ์ด์ง ํธ๋ฆฌ ์ํ ) (0) | 2022.11.04 |