ProrityQuenue优先队列初次使用

PriorityQueNue优先队列的小测试:



    public static void main(String[] args) {
        MyComparator c = new MyComparator();
        PriorityQueue<QuenueTest> pq = new PriorityQueue<>(3, c);
        QuenueTest t1 = new QuenueTest(1, 1);
        QuenueTest t2 = new QuenueTest(2, 2);
        QuenueTest t3 = new QuenueTest(3, 3);
        pq.add(t1);
        pq.add(t2);
        pq.add(t3);

        // PriorityQuenue继承AbstractQueue,AbstractQueue继承AbstractCollection,可以迭代
        System.out.println("iteratign begining...");
        for (QuenueTest t : pq) {
            System.out.println(t.getData() + "-----" + t.getWeight());
        }

        System.out.println("removing elements ...");
        while (!pq.isEmpty()) {
            System.out.println(pq.remove());
        }
        System.out.println("after removing... ");
        System.out.println(pq.isEmpty() == true ? "我被榨干了..." : "我还有数据");
    }

    /**
     * 
     * @ClassName: QuenueTest.java
     * @功能描述:
     * 
     */
    static class QuenueTest {
        int data;
        int weight;// 权重值

        public int getData() {
            return data;
        }

        public void setData(int data) {
            this.data = data;
        }

        public int getWeight() {
            return weight;
        }

        public void setWeight(int weight) {
            this.weight = weight;
        }

        public QuenueTest(int data, int weight) {
            super();
            this.data = data;
            this.weight = weight;
        }

    }

    /**
     * 
     * @ClassName: 构造PriorityQuenue用
     * @功能描述: PriorityQuenue的构造函数: public PriorityQueue(int initialCapacity, Comparator<? super E>
     *        comparator) 可以看到,需要传递一个comparator实例。
     */
    static class MyComparator implements Comparator<QuenueTest> {

        @Override
        public int compare(QuenueTest o1, QuenueTest o2) {
            // TODO Auto-generated method stub
            if (o1.getWeight() < o2.getWeight()) {
                return -1;
            } else if (o1.getWeight() > o2.getWeight()) {
                return 1;
            } else {
                return 0;
            }
    }

猜你喜欢

转载自blog.csdn.net/Jatham/article/details/81667251