Java中的Java.util.PriorityQueue类

Java中的Java.util.PriorityQueue类

它是基于优先级堆的优先队列。

  • 此类中的元素按自然顺序排列,或者取决于我们在构建时使用的构造函数。
  • 它不允许空指针。
  • 如果它依赖于自然排序,则不允许插入无法比较的对象。

构造函数:

  • PriorityQueue(): 创建一个具有默认初始容量(11)的PriorityQueue,根据它们的自然顺序对它们的元素进行排序。
  • PriorityQueue(Collection c): 创建包含指定集合中的元素的PriorityQueue。
  • PriorityQueue(int initialCapacity) :创建具有指定初始容量的PriorityQueue,根据其自然排序对其元素进行排序。
  • PriorityQueue(int initialCapacity, Comparator comparator): 创建具有指定初始容量的PriorityQueue,根据指定的比较器对其元素进行排序。
  • PriorityQueue(PriorityQueue c) :创建一个包含指定优先级队列中元素的PriorityQueue。
  • PriorityQueue(SortedSet c) :创建一个包含指定排序集中元素的PriorityQueue。

声明:

public class PriorityQueue
   extends AbstractQueue
   implements Serializable
Java

方法:

add(element) : java.util.PriorityQueue.add() 向优先队列添加元素。
语法 :

public boolean add(E e)
Java

参数 :
element : 需要添加的元素。
Return :
返回 true。
异常 :
– ClassCastException
– NullPointerException

comparator() : java.util.PriorityQueue.comparator() 对队列中的元素进行排序。
语法 :

public Comparator comparator()
Java

Return :
对队列进行排序或返回 null,如果是自然排序的。

contains(Object obj) : java.util.PriorityQueue.contains(obj) 如果优先队列包含元素“obj”,则返回 true。
语法 :

public boolean contains(Object obj) 
Java

参数 :
obj : 要检查的对象
Return :
如果存在对象,则返回 true,否则返回 false

iterator() : java.util.PriorityQueue.iterator() 迭代队列中的元素。
语法 :

public Iterator iterator()
Java

Return :
迭代队列中的元素。

offer(element) : java.util.PriorityQueue.offer() 将特定元素插入给定的优先队列中。
语法 :

public boolean offer(E element)
Java

参数 :
element : 要输入的特定元素。
Return :
返回 true。
异常 :
– ClassCastException
– NullPointerException

peek() : java.util.PriorityQueue.peek() 确定队列的头元素。
语法 :

public E peek()    
Java

Return :
如果存在头部,则返回,否则返回 null。

poll() : java.util.PriorityQueue.poll() 确定头元素,然后将其删除。

remove(Object obj) : java.util.PriorityQueue.remove() 从队列中删除特定对象。

size() : java.util.PriorityQueue.size() 返回优先队列中的元素数量。

toArray() : java.util.PriorityQueue.toArray() 返回包含 PriorityQueue 元素的数组。

toArray(): java.util.PriorityQueue.toArray() 返回一个包含PriorityQueue所有元素的数组。

toArray(T[] array): java.util.PriorityQueue.toArray(T[] a) 返回包含PriorityQueue元素的数组。

clear(): java.util.PriorityQueue.clear() 清空PriorityQueue中所有元素。

// Java程序示例
// java.utl.priorityQueue类的方法
  
// add(), comparator(), conatins(), iterator(), offer()
// peek(), poll(), toArray(), size(), toArray(t[] g1),
// remove(), clear()
  
import java.util.*;
public class NewClass
{
    public static void main(String[] args)
    {
        // 创建Priority Queue:
      PriorityQueue <Integer> geek = new PriorityQueue <Integer> ();
 
      for(int i=2; i<=20; i=i+2)
      {
          // 使用add()添加元素
          geek.add(new Integer (i));
      }
 
      System.out.println("geek PriorityQueue : " + geek);
 
      // 使用comparator()方法进行比较
      // 这里不需要排序,因为它是自然排序的。
      Comparator geek_comp = geek.comparator();
      System.out.println("geek PriorityQueue : " + geek_comp);
 
      // 使用contains()方法
      boolean check = geek.contains(6);
      System.out.println("使用contains()方法 : " + check);
 
      // 使用iterator()方法
      Iterator g_iterator = geek.iterator();
 
      System.out.print("Iterator values : ");
      while(g_iterator.hasNext())
      {
          System.out.print(g_iterator.next() + " ");
      }
      System.out.println("");
 
      // 使用offer()方法
      geek.offer(3050);
      System.out.println("geek PriorityQueue : " + geek);
 
      // 使用peek()方法
      System.out.println("通过peek()方法查看PriorityQueue中的头部元素 : " + geek.peek());
 
      //使用poll()方法
      int h = geek.poll();
      System.out.println("\n通过poll()方法查看PriorityQueue中的头部元素 : " + h);
      System.out.println("因为poll()方法,geek PriorityQueue发生了变化 : " + geek);
 
      // 使用remove()方法
      boolean r = geek.remove(8);
      System.out.println("\n可以删除 : " + r);
      System.out.println("因为remove()方法,geek PriorityQueue发生了变化 : " + geek);
 
      // 使用size()方法
      System.out.println("\nPriorityQueue的大小 : " + geek.size());
 
      // 使用toArray()方法
      Object[] g = geek.toArray();
      System.out.print ( "PriorityQueue中的数组 : ");
 
      for ( int i = 0; i<g.length; i++ )
      {
          System.out.print (g[i].toString() + " ") ;
           }
    System.out.println("\n");
 
    // 使用toArray(t[] g1)方法
    Integer[] g2 = new Integer[5];
    Integer[] g1 = geek.toArray(g2);
    System.out.print ( "大小为5的PriorityQueue中的数组 : ");
 
    for ( int i = 0; i<g1.length; i++ )
    {
        System.out.print (g1[i].toString() + " ") ;
    }
 
    System.out.println("\n");
 
    // 使用clear()方法
    geek.clear();
    System.out.println("执行clear()方法后,PriorityQueue为空 : " + geek);
 
}
Java

输出 :

geek PriorityQueue : [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
geek PriorityQueue : null
使用contains()方法 : true
Iterator values : 2 4 6 8 10 12 14 16 18 20 
geek PriorityQueue : [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 3050]
通过peek()方法查看PriorityQueue中的头部元素 : 2
通过poll()方法查看PriorityQueue中的头部元素 : 2
因为poll()方法,geek PriorityQueue发生了变化 : [4, 6, 8, 10, 12, 14, 16, 18, 20, 3050]
可以删除 : true
因为remove()方法,geek PriorityQueue发生了变化 : [4, 6, 10, 12, 14, 16, 18, 20, 3050]
PriorityQueue的大小 : 9
PriorityQueue中的数组 : 4 6 10 12 14 16 18 20 3050 
大小为5PriorityQueue中的数组 : 4 6 10 12 14 
执行clear()方法后,PriorityQueue为空 : []
Java

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册