[Java] PriorityQueue
์๋ฐ ์ฐ์ ์์ ํ
์ ํ๋ ๋๊ฐ ๋น ๋ฅธ์์ผ๋ก ์ ๋ ฌ
์๋ก์ด ์ ๋ ฌ๋ฐฉ์์ ์ฌ์ฉํ๊ธฐ์ํด์๋ PriorityQueue๋ฅผ Comparator<>๋ก ์ฌ์ ์ ํด์ผํ๋ค!!
package me.day14.practice.practice02;
import java.util.Comparator;
import java.util.PriorityQueue;
public class Main {
public static void main(String[] args) {
System.out.println("===============================================================================");
System.out.println("\t\t\t\t์ฐ์ ์์ ํ");
System.out.println("===============================================================================");
// ์ฐ์ ์์๊ฐ ์กด์ฌํ๋ Queue (ํ์ ํตํด ๊ตฌํ)
PriorityQueue<Student> priorityQueue = new PriorityQueue (new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
if (Integer.parseInt(o1.getStudentNo()) < Integer.parseInt(o2.getStudentNo())){
return -1;
} else if (Integer.parseInt(o1.getStudentNo()) > Integer.parseInt(o2.getStudentNo())) {
return 1;
} else {
return 0;
}
}
@Override
public boolean equals(Object obj) {
return false;
}
}) {
};
// PriorityQueue Queue์ ์์ ์ถ๊ฐ
priorityQueue.offer(new Student("20212222", "์ด์์ ", 85)); // ์
ํ์ฐ๋: 2021 + ๋ค์ด๊ฐ ์์: 1
priorityQueue.offer(new Student("20211111", "์๋ฐํน", 100)); // ์
ํ์ฐ๋: 2021 + ๋ค์ด๊ฐ ์์: 2
priorityQueue.offer(new Student("20213333", "์ด์ ์ด", 50)); // ์
ํ์ฐ๋: 2021 + ๋ค์ด๊ฐ ์์: 3
priorityQueue.offer(new Student("20171234", "์ดํ
๋ฆฌ", 80)); // ์
ํ์ฐ๋: 2017 + ๋ค์ด๊ฐ ์์: 4
priorityQueue.offer(new Student("20045555", "์ด์ด์", 70)); // ์
ํ์ฐ๋: 2004 + ๋ค์ด๊ฐ ์์: 5
while (!priorityQueue.isEmpty()) {
Student pollStudent = priorityQueue.poll();
System.out.println("pollStudent = " + pollStudent);
System.out.println("priorityQueue = " + priorityQueue);
System.out.println("priorityQueue.size() = " + priorityQueue.size());
System.out.println();
}
System.out.println();
}
}
์ถ๋ ฅ๋ฌธ
===============================================================================
์ฐ์ ์์ ํ
===============================================================================
pollStudent = Student{studentNo='20045555', name='์ด์ด์', score=70}
priorityQueue = [Student{studentNo='20171234', name='์ดํ
๋ฆฌ', score=80}, Student{studentNo='20211111', name='์๋ฐํน', score=100}, Student{studentNo='20213333', name='์ด์ ์ด', score=50}, Student{studentNo='20212222', name='์ด์์ ', score=85}]
priorityQueue.size() = 4
pollStudent = Student{studentNo='20171234', name='์ดํ
๋ฆฌ', score=80}
priorityQueue = [Student{studentNo='20211111', name='์๋ฐํน', score=100}, Student{studentNo='20212222', name='์ด์์ ', score=85}, Student{studentNo='20213333', name='์ด์ ์ด', score=50}]
priorityQueue.size() = 3
pollStudent = Student{studentNo='20211111', name='์๋ฐํน', score=100}
priorityQueue = [Student{studentNo='20212222', name='์ด์์ ', score=85}, Student{studentNo='20213333', name='์ด์ ์ด', score=50}]
priorityQueue.size() = 2
pollStudent = Student{studentNo='20212222', name='์ด์์ ', score=85}
priorityQueue = [Student{studentNo='20213333', name='์ด์ ์ด', score=50}]
priorityQueue.size() = 1
pollStudent = Student{studentNo='20213333', name='์ด์ ์ด', score=50}
priorityQueue = []
priorityQueue.size() = 0