๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐‘†๐‘ข๐‘›๐‘ โ„Ž๐‘–๐‘›๐‘’ ๐‘Ž๐‘“๐‘ก๐‘’๐‘Ÿ ๐‘Ÿ๐‘Ž๐‘–๐‘›โœง

[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