๋๊ธฐ์ด์ด๋ ๋ฌด์์ ๋๊น?
์ด๋ฆ์์ ์ ์ ์๋ฏ์ด Queue๋ FIFO(First In First Out) ์ฝ์ ์์๋ฅผ ๋ฐ๋ฅด๋ Java์ ์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋๋ค . ์๋ฃํ ์ ์ ๋๊ธฐ์ด๋ก ์ฝ๊ฒ ์์ํ ์ ์์ต๋๋ค. ๋นจ๋ฆฌ ๋ค์ด๊ฐ์๋ก ๋นจ๋ฆฌ ๋์ต๋๋ค. ์ด๋ ์ด์ ์ ๋๊ธฐ์ด์ ์ถ๊ฐ๋ ์์๋ ๋ ์ผ์ฐ ๋ ๋ ๊ฒ์์ ์๋ฏธํฉ๋๋ค. ๋๊ธฐ์ด์ ์ฒซ ๋ฒ์งธ ์์(์)๋ head ๋ผ๊ณ ๋ ํฉ๋๋ค .
Queue์ poll() ๋ฉ์๋๋ ๋ฌด์์ ๋๊น?
poll() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด Queue์ ์ต์์ ์์(ํค๋)๋ฅผ ๊ฒ์ํ๊ณ ์ ๊ฑฐํ ์ ์์ต๋๋ค. ์ด ์์์ ์์ ๋๊ธฐ์ด์์ poll()์ ํธ์ถํ๋ฉด ๊ฒฐ๊ณผ๋ก '1'์ ๋ฐ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์๋ 4๊ฐ์ ์์๋ง ๋จ๊ฒ ๋ฉ๋๋ค.
Java์ poll() ๋ฉ์๋
์ 1
๊ทธ๋ฆผ 1.0์ ํ์๋ ๋๊ธฐ์ด์์ poll() ํจ์ ๋ฅผ ํธ์ถํ๋ ๊ฐ๋จํ ์๋ฅผ ์ดํด๋ณด์ญ์์ค .
import java.util.LinkedList;
import java.util.Queue;
public class QueuePollMethod {
public static void main(String[] args) {
// create a queue of die rolls
Queue dieRoll = new LinkedList();
// Add 6 integers one by one
dieRoll.add(1);
dieRoll.add(2);
dieRoll.add(3);
dieRoll.add(4);
dieRoll.add(5);
dieRoll.add(6);
// print the original queue
System.out.println("Queue:\t" + dieRoll + "\n");
// after calling poll()
System.out.println("poll() returned : " + dieRoll.poll());
System.out.println("Queue Updated!\t" + dieRoll + "\n");
// after calling poll()
System.out.println("poll() returned : " + dieRoll.poll());
System.out.println("Queue Updated!\t" + dieRoll + "\n");
// after calling poll()
System.out.println("poll() returned : " + dieRoll.poll());
System.out.println("Queue Updated!\t" + dieRoll + "\n");
}
}
์ฐ์ถ
๋๊ธฐ์ด: [1, 2, 3, 4, 5, 6] poll() ๋ฐํ๋จ: 1 ๋๊ธฐ์ด ์
๋ฐ์ดํธ๋จ! [2, 3, 4, 5, 6] poll() ๋ฐํ: 2 ๋๊ธฐ์ด ์
๋ฐ์ดํธ! [3, 4, 5, 6] poll() ๋ฐํ: 3 ๋๊ธฐ์ด ์
๋ฐ์ดํธ! [4, 5, 6]
๊ฐ poll() ํธ์ถ ํ ๋๊ธฐ์ด์ ํฌ๊ธฐ๊ฐ 1์ฉ ์ค์ด๋ค๊ณ ํค๋๊ฐ ๋ฐํ๋๋ ๋ฐฉ์์ ์ ์ํ์ญ์์ค .
์ 2
์ผ์ฃผ์ผ์ ๋ค๋ฅธ ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ฐ๋ฆฌ๋ ํ์ผ์ ํ๋์ฉ poll()์ ํธ์ถ ํ๊ณ ์ด๋ป๊ฒ ๋ณด์ด๋์ง ๋ณผ ๊ฒ์ ๋๋ค.
import java.util.LinkedList;
import java.util.Queue;
public class QueuePollMethod {
public static void main(String[] args) {
Queue days = new LinkedList();
days.add("Sunday");
days.add("Monday");
days.add("Tuesday");
days.add("Wednesday");
days.add("Thursday");
days.add("Friday");
days.add("Saturday");
// print all the days in the week
System.out.println("Week Days: \t" + days + "\n");
// after calling poll()
System.out.println("poll() returned: " + days.poll());
System.out.println("Days Updated!\t" + days + "\n");
// after calling poll()
System.out.println("poll() returned: " + days.poll());
System.out.println("Days Updated!\t" + days + "\n");
// after calling poll()
System.out.println("poll() returned: " + days.poll());
System.out.println("Days Updated!\t" + days + "\n");
}
}
์ฐ์ถ
์์ผ: [์ผ์์ผ, ์์์ผ, ํ์์ผ, ์์์ผ, ๋ชฉ์์ผ, ๊ธ์์ผ, ํ ์์ผ] poll() ๋ฐํ: ์ผ์์ผ ์
๋ฐ์ดํธ! [์์์ผ, ํ์์ผ, ์์์ผ, ๋ชฉ์์ผ, ๊ธ์์ผ, ํ ์์ผ] poll() ๋ฐํ: ์์์ผ ์
๋ฐ์ดํธ! [ํ์์ผ, ์์์ผ, ๋ชฉ์์ผ, ๊ธ์์ผ, ํ ์์ผ] poll() ๋ฐํ๋จ: ํ์์ผ ์
๋ฐ์ดํธ๋จ! [์,๋ชฉ,๊ธ,ํ ]
poll()์ peek() ๋ฐ remove()์ ์ด๋ป๊ฒ ๋ค๋ฅธ๊ฐ์?
์ธ ๊ฐ์ง ๊ฐ๋ ์ด ๋งค์ฐ ๋น์ทํด ๋ณด์ด๊ธฐ ๋๋ฌธ์ ์ด๋ณด์๋ ์ฝ๊ฒ ํผํฉํ ์ ์์ต๋๋ค. "q"๋ฅผ ๋๊ธฐ์ด๋ก ํฉ์๋ค. ๊ทธ๋ฌ๋ฉด ์๋ก ๋ค๋ฅธ ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.- q.poll() : ๋๊ธฐ์ด์ ํค๋๋ฅผ ์ ๊ฑฐํ๊ณ ๊ฒ์ํฉ๋๋ค.
- q.peek() : ์ ๊ฑฐํ์ง ์๊ณ ๋๊ธฐ์ด์ ํค๋๋ง ๊ฒ์/๋ฐํํฉ๋๋ค.
- q.remove() : ๋๊ธฐ์ด์ ํค๋๋ฅผ ์ ๊ฑฐํ๊ณ ๊ฒ์ํฉ๋๋ค.
์ 3
์ด์ ์์ ์ธ ๊ฐ์ง ๊ธฐ๋ฅ์ ๋ํ ๋ช ๊ฐ์ง ์๋ฅผ ๊ฐ๋จํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
import java.util.LinkedList;
import java.util.Queue;
public class QueuePollMethod {
public static void main(String[] args) {
Queue days = new LinkedList();
days.add("Sunday");
days.add("Monday");
days.add("Tuesday");
days.add("Wednesday");
days.add("Thursday");
days.add("Friday");
days.add("Saturday");
// print all the days in the week
System.out.println("Week Days: \t" + days + "\n");
// after calling peek()
System.out.println("peek() returned: " + days.peek());
System.out.println("Week Days: \t" + days + "\n");
System.out.println("peek() returned: " + days.peek());
System.out.println("Week Days: \t" + days + "\n");
// after calling remove()
System.out.println("remove() returned: " + days.remove());
System.out.println("Days Updated!\t" + days + "\n");
System.out.println("remove() returned: " + days.remove());
System.out.println("Days Updated!\t" + days + "\n");
System.out.println("remove() returned: " + days.remove());
System.out.println("remove() returned: " + days.remove());
System.out.println("remove() returned: " + days.remove());
System.out.println("remove() returned: " + days.remove());
System.out.println("Days Updated!\t" + days + "\n");
// after calling poll()
System.out.println("poll() returned: " + days.poll());
System.out.println("Days Updated!\t" + days + "\n");
System.out.println("poll() returned: " + days.poll());
System.out.println("remove() returned: " + days.remove());
}
}
์ฐ์ถ
์์ผ: [์ผ์์ผ, ์์์ผ, ํ์์ผ, ์์์ผ, ๋ชฉ์์ผ, ๊ธ์์ผ, ํ ์์ผ] peek() ๋ฐํ: ์ผ์์ผ ์์ผ: [์ผ์์ผ, ์์์ผ, ํ์์ผ, ์์์ผ, ๋ชฉ์์ผ, ๊ธ์์ผ, ํ ์์ผ] peek() ๋ฐํ: ์ผ์์ผ ์ฃผ์ค : [์ผ์์ผ, ์์์ผ, ํ์์ผ, ์์์ผ, ๋ชฉ์์ผ, ๊ธ์์ผ, ํ ์์ผ] remove() ๋ฐํ: ์ผ์์ผ ์
๋ฐ์ดํธ! [์์์ผ, ํ์์ผ, ์์์ผ, ๋ชฉ์์ผ, ๊ธ์์ผ, ํ ์์ผ] remove() ๋ฐํ: ์์์ผ ์
๋ฐ์ดํธ! [ํ์์ผ, ์์์ผ, ๋ชฉ์์ผ, ๊ธ์์ผ, ํ ์์ผ] remove() ๋ฐํ๋จ: ํ์์ผ remove() ๋ฐํ๋จ: ์์์ผ remove() ๋ฐํ๋จ: ๋ชฉ์์ผ remove() ๋ฐํ๋จ: ๊ธ์์ผ ์
๋ฐ์ดํธ๋จ! [ํ ์์ผ] poll() ๋ฐํ: ํ ์์ผ ์
๋ฐ์ดํธ๋จ! [] poll()์ด ๋ฐํ๋จ: java.util.LinkedList.removeFirst(LinkedList.java:270)์ "main" ์ค๋ ๋ java.util.NoSuchElementException์์ null ์์ธ java.util.LinkedList.remove(LinkedList.java:
peek() ํธ์ถ ํ ๋ณผ ์ ์๋ฏ์ด ํ์ผ์ ๋์ผํ๊ฒ ์ ์ง๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ remove() ๋๋ poll()์ ์ฌ์ฉํ๋ฉด ๋๊ธฐ์ด์ ํฌ๊ธฐ๊ฐ ํค๋ ๋ฐํ๊ณผ ํจ๊ป 1์ฉ ์ค์ด๋ญ๋๋ค. ๋ํ ๋น ๋๊ธฐ์ด์์ remove()๋ฅผ ํธ์ถํ๋ฉด java.util.NoSuchElementException ์ด ๋ฐ์ ํ์ง๋ง poll()์ ์ฌ์ฉํ๋ฉด ์์ธ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค .
GO TO FULL VERSION