zoukankan      html  css  js  c++  java
  • Java 优先队列

    Java PriorityQueue

    优先队列是一种重要的数据结构,其利用的是小/大顶堆来实现的。

    Java中提供了PriorityQueue,PriorityQueue是基于小顶堆实现的无界优先队列,这个优先队列中的元素可以默认自然排序(实现了Comparable接口或内建类型)或者通过提供的Comparator(比较器)在队列实例化的时进行排序。

    优先队列不允许空值,而且不支持non-comparable(不可比较)的对象,比如用户自定义的类。优先队列要求使用Java Comparable和Comparator接口给对象排序,并且在排序时会按照优先级处理其中的元素。

    优先队列的大小是不受限制的,但在创建时可以指定初始大小。当我们向优先队列增加元素的时候,队列大小会自动增加。如果不指定初始大小,其默认的初始大小为11。下面是其部分源代码

    public class PriorityQueue<E> extends AbstractQueue<E>
        implements java.io.Serializable {
        // ... other code
            private static final int DEFAULT_INITIAL_CAPACITY = 11;
            public PriorityQueue() { //默认构造函数
                this(DEFAULT_INITIAL_CAPACITY, null);
            }
    
            public PriorityQueue(int initialCapacity) { // 只带初始话大小的构造函数
                this(initialCapacity, null);
            }
    
            public PriorityQueue(Comparator<? super E> comparator) { // 只带比较器的构造函数
                this(DEFAULT_INITIAL_CAPACITY, comparator);
            }
    
            public PriorityQueue(int initialCapacity,
                             Comparator<? super E> comparator) {
                // Note: This restriction of at least one is not actually needed,
                // but continues for 1.5 compatibility
                if (initialCapacity < 1)
                    throw new IllegalArgumentException();
                this.queue = new Object[initialCapacity];
                this.comparator = comparator;
            }
            //... other code
        }

    用法

    优先队列与队列不同的是,队列是服从先进先出(FIFO)的原则,而优先队列里的元素则是有优先级区分的,最先出队的是优先级最高的元素,入队时则按照优先级整理队列,使得优先级最高的元素放在对列头部。PriorityQueue的操作方法和Queue操作的方法基本相同。有关Queue的方法java中queue的使用

  • 相关阅读:
    zoj 3627#模拟#枚举
    Codeforces 432D Prefixes and Suffixes kmp
    hdu 4778 Gems Fight! 状压dp
    CodeForces 379D 暴力 枚举
    HDU 4022 stl multiset
    手动转一下田神的2048
    【ZOJ】3785 What day is that day? ——KMP 暴力打表找规律
    poj 3254 状压dp
    C++中运算符的优先级
    内存中的数据对齐
  • 原文地址:https://www.cnblogs.com/pluviophile/p/7460324.html
Copyright © 2011-2022 走看看