API学习PriorityQueue

package com.wonders.week01.collection;

import java.util.Iterator;
import java.util.PriorityQueue;

/**
 * JDK1.7
 * PriorityQueue优先级队列
 * (1)继承自 AbstractQueue
 * (2)它是一个基于优先级堆的无界优先队列。
 * (3)优先级队列的元素的顺序是按照自然顺序或者是按照它们创建的时候所采用的构造器。
 * (4)优先级队列是不允许null的元素
 * (5)优先级队列依赖于自然排序但是插入不能比较的对象。
 * (6)该队列的头是指定顺序的最小元素,如果最小值绑定了多个元素,头元素是这些元素中的一个。
 * (7)优先级队列可以通过poll, remove, peek, 和element这些方法来获取队列的头。
 * (8)一个优先级队列是无界的,在队列的内部存在一个用来管理存储元素的数组大小的容量的值。一般情况下,该容量大小至少和队列的大小相同。
 * (9)当元素被添加到一个优先级队列中的时候,它的容量大小就会自动的增长。增长的策略具体是不清楚的。
 * (10)这个类及其迭代器实现了集合和迭代器接口的所有可选方法,其中Iterator提供了iterator() 方法,但是不可以保证按照任何特定的顺序来遍历优先级队列的元素。
 * (11)是一个非线程安全的集合类。如果有任何线程修改队列时,多个线程是不可以同时访问同一个优先级队列的。
 * (12)如果有多个线程需要同时访问优先级队列,可以采用线程安全类 PriorityBlockingQueue。
 * (13)其中这些方法offer, poll, remove() 和 add的时间复杂度是log(n),remove(Object)和contains(Object)是线性的时间复杂度,peek, element和size都是常数阶的算法时间复杂度
 * @author liyongyong
 *
 */
public class PriorityQueueTest {

	public static void main(String[] args) {
		PriorityQueue<Integer> queue = new PriorityQueue<Integer>();
		PriorityQueue<Integer> queue2 = new PriorityQueue<Integer>();
		queue2.add(2);
		queue2.add(4);
		//把元素插入到优先级队列中
		queue.add(1);
		queue.add(2);
		queue.add(3);
		queue.add(4);
		queue.add(3);
		queue.offer(2);
		//让队列中的元素出队列,
		Integer peek = queue.peek();
		System.out.println("优先级队列出队列的元素 : " + peek);
		//判断队列中是否包含该元素,包含返回true,否则返回false
		boolean flag = queue.contains(1);
		System.out.println("是否存在 : " + flag);
		//是否该队列包含该集合,如果包含则返回true,否则返回false
		boolean contains = queue.containsAll(queue2);
		System.out.println("queue是否包含queue2 : " + contains);
		//获取队列的头元素
		Integer element = queue.element();
		System.out.println("元素是 : " + element);
		//遍历优先级队列中的每个元素
		Iterator<Integer> iterator = queue.iterator();
		System.out.println("使用iterator来遍历优先级队列中的元素:");
		while (iterator.hasNext()) {
			Integer integer = (Integer) iterator.next();
			System.out.print("	" + integer);
		}
		System.out.println();
		//检索并删除此队列的头部,如果此队列为空,则返回null。
		Integer poll = queue.poll();
		System.out.println(poll);
		//遍历优先级队列中的每个元素
		Iterator<Integer> iterator1 = queue.iterator();
		System.out.println("使用poll方法后遍历优先级队列中的元素 : ");
		while (iterator1.hasNext()) {
			Integer integer = (Integer) iterator1.next();
			System.out.print("	" + integer);
		}
	}
}

这里写图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值