Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

การ Implement PriorityQueue ผ่าน Comparator ใน Java

ตัวอย่างโค้ด

import java.util.*;

public class Demo {
    public static void main(String[] args) {
        Scanner my_scan = new Scanner(System.in);
        PriorityQueue my_pq = new PriorityQueue(3, new demoComparator());
        Demo_class obj_1 = new Demo_class("Joe", 25);
        my_pq.add(obj_1);
        Demo_class obj_2 = new Demo_class("Goldberg", 27);
        my_pq.add(obj_2);
        while (!my_pq.isEmpty()) {
            System.out.println(my_pq.poll().getName());
        }
    }
}

class demoComparator implements Comparator {
    public int compare(Demo_class s1, Demo_class s2) {
        if (s1.age < s2.age)
            return 1;
        else if (s1.age > s2.age)
            return -1;
        return 0;
    }
}

class Demo_class {
    public String name;
    public int age;
    public Demo_class(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
}

ผลลัพธ์

Goldberg
Joe

คลาส Demo มี main สร้าง Scanner และ PriorityQueue ระบุความจุ 3 และ Comparator คือ demoComparator สร้างอ็อบเจ็กต์ Demo_class 2 ตัว add เข้า queue วนลูป poll() จน queue ว่าง พิมพ์ชื่อ demoComparator implements Comparator เปรียบเทียบอายุ (age) เรียงจากมากไปน้อย (อายุมากกว่าออกก่อน) Demo_class เก็บ name และ age มี constructor และ getName()