๐ค์ฝํ ๋ฌธ์ ๋ฅผ ํ๋ค๋ณด๋ฉด ์ฐ์ ์์ํ๋ฅผ ์ฌ์ฉํ ๋๊ฐ ๋ง๋ค. ๊ทธ๋์ ํ๋ฒ ์ ๋ฆฌํ ํ์๊ฐ ์์ด ๊ธ์ ์ฐ๊ฒ ๋์๋ค.
PriorityQueue
๋ ์ฐ์ ์์ํ๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ ๋ด๋ถ๋ ํ์ผ๋ก ๊ตฌํ๋์ด ์์ด ํ์ ์ฑ์ง์ ๊ฐ์ง๊ณ ์๋ค.
PriorityQueue
๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์๋์ ๊ฐ์ด ์ ์ธํ๋ฉด ๋๋ค.
PriorityQueue<Integer> queue = new PriorityQueue<>();
๐ํ์ ๊ฐ์ ๋ฃ์ผ๋ ค๋ฉด add
ํจ์๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค.
PriorityQueue<Integer> queue = new PriorityQueue<>();
queue.offer(1);
queue.offer(2);
queue.offer(3);
๐ํ์์ ๊ฐ์ ๋นผ์ค๋ ค๋ฉด poll
ํจ์๋ฅผ ์ด์ํ๋ฉด ๋๋ค. ์ด ๋ ์ ๋ ฌ์ ๋ฐ๋ผ ๊ฐ์ฅ ํฐ ๊ฐ ๋ ๊ฐ์ฅ ์์ ๊ฐ์ด ๋์ค๊ฒ ๋๋๋ฐ ์ฌ๊ธฐ์ ์๋ฌด ๊ฐ๋ ์ฃผ์ง ์๋ ๋ค๋ฉด ๊ฐ์ฅ ์์ ๊ฐ์ด ๋์จ๋ค.
PriorityQueue<Integer> queue = new PriorityQueue<>();
queue.offer(1);
queue.offer(2);
queue.offer(3);
Integer poll = queue.poll();
System.out.println("poll = " + poll);
// 1
๐๋ง์ฝ ๊ฐ์ ์ ๊ฑฐํ์ง ์๊ณ ํ์ธ๋ง ํ๊ณ ์ถ๋ค๋ฉด peek์ ์ด์ฉํ๋ฉด๋๋ค.
PriorityQueue<Integer> queue = new PriorityQueue<>();
queue.offer(1);
queue.offer(2);
queue.offer(3);
System.out.println("poll = " + queue.peek());
// 1
๐ปํ๋ฅผ ์ฌ์ฉํ๋ค๋ณด๋ฉด ๋ด๊ฐ ์ง์ ์ ๋ ฌ ์์๋ฅผ ๊ตฌ์ฑํ๊ณ ์ถ์ด์ง๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๊ทธ๋ด๋๋ ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ด์ฉํ๋ฉด ๋๋ค.
PriorityQueue<Integer> queue = new PriorityQueue<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
queue.offer(1);
queue.offer(2);
queue.offer(3);
Integer poll = queue.poll();
System.out.println("poll = " + poll);
//3
๐คจcomparator๋ฅผ ์ง์ ๊ตฌํํ์ฌ ์ง์ด๋ฃ์ด์ฃผ๋ฉด ๋๋๋ฐ ์ฌ๊ธฐ์๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ์ ํ์๋ค.
์์ ๊ฒฝ์ฐ ๋๋ค์์ผ๋ก๋ ํด๊ฒฐ ํ ์ ์๋ค.
PriorityQueue<Integer> queue = new PriorityQueue<>((o1, o2) -> o2-o1);
queue.offer(1);
queue.offer(2);
queue.offer(3);
Integer poll = queue.poll();
System.out.println("poll = " + poll);
// 3
์ด ์ธ์๋ ๋จ์ํ๊ฒ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ์ ํ๊ณ ์ถ๋ค๋ฉด Collections.reverseOrder()์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
PriorityQueue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder());
๐queue์์ ์ฌ์ฉํ ์ ์๋ ํจ์๋ ์ฌ์ฉํ ์ ์์ผ๋ ๋ง์ฝ ํ์ํ๋ค๋ฉด ์ฌ์ฉํ๋ฉด ๋๋ค.