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

    Java util包中的PriorityQueue类用来表示优先队列。优先队列是一个以集合为基础的抽象数据类型,队列中的每个元素都有一个优先级值。优先级值用来表示该元素的出列的优先级。

     

    Java中的优先队列基于堆(heap)。堆是一个完全二叉树,所以PriorityQueue不是线性结构,而是树形结构。PriorityQueue中元素优先级的高低可以由一个Comparator类的实例来指定,如果未指定则按照自然顺序排序。可以按照下面的方法建立一个指定comparator的PriorityQueue:

    PriorityQueue<MyObject> PQ=new PriorityQueue<MyObject>(1,new MyComparator implements Comparator<MyObject>(){
    public int compare(MyObject obj1,MyObject obj2){
    if(obj1.getSize()<obj2.getSize()){
                    return -1;
                }
                if(obj1.getSize()>obj2.getSize()){
                    return 1;
                }
                return 0;
    }}) 

    这里使用PriorityQueue来存储我自定义的对象MyObject。此对象有个方法getSize()来得到它存储的一个有关大小的整型值,该值越大,则该对象的优先级越大。

    要想按照优先级高低输出PriorityQueue中的所有元素,则可以采用PriorityQueue类中的poll()方法,该方法得到堆顶元素,并且删除。 此外,Java api还提供了多种操作,可以查看api文档,http://docs.oracle.com/javase/7/docs/api/

  • 相关阅读:
    线程执行器(一)
    修改锁的公平性
    Spark学习视频整合
    使用读写锁实现同步数据访问
    使用锁实现同步
    使用工厂类创建线程
    线程的分组
    android手机状态解释,比方android.os.Build.VERSION.SDK
    Android-Dalvik指令集
    selenium使用Xpath定位之完整篇
  • 原文地址:https://www.cnblogs.com/orchid/p/2600703.html
Copyright © 2011-2022 走看看