【Java基础】集合总结(三)——Queue集合、Map集合

一、Queue集合

Queue用于模拟队列这种数据结构,队列的特点是“先进先出”(FIFO)。队列的头部保存在队列中存放时间最长的元素,队列的尾部保存在队列中存放时间最短的元素。新元素插入(offer)到队列的尾部,访问元素(poll)操作会返回队列头部的元素。通常,队列不允许随机访问队列中的元素。

(一)PriorityQueue实现类

PriorityQueue保存队列元素的顺序并不是按加入队列的顺序,而是按队列元素的大小进行排序。因此当调用peek()方法或者poll()方法取出队列时,并不是取出最先进入队列的元素,而是取出队列中最小的元素。

//定义一个PriorityQueue类型的队列,并依次加入6,-3,20
PriorityQueue pq = new PriorityQueue();
pq.offer(6);
pq.offer(-3);
pq.offer(20);

//访问队列中的第一个元素,输出最小的元素-3
System.out.println(a.poll());

PriorityQueue不允许插入null元素,它还需要对队列元素进行排序,有两种排序方式

  • 自然排序:采用自然排序的PriorityQueue集合中的元素必须实现了Comparable接口,而且应该是同一个类的多个实例,否则可能导致ClassCastException异常。
  • 定制排序:创建PriorityQueue队列时,传入一个Comparator对象,该对象负责队列中的所有元素进行排序。采用定制排序时不要求队列元素实现Comparable接口。

(二)Deque接口与ArrayDeque实现类

Deque代表一个双端队列,特点是允许从两端来操作队列的元素。Deque不仅可以当成双端队列使用,而且可以被当成栈来使用,因为该类里还包含了pop(出栈)、push(入栈)两个方法。

Deque接口提供了一个典型的实现类,ArrayDeque。它是一个基于数组实现的双端队列,其可以作为栈来使用,也可以作为队列来使用。

//作为栈使用,先进后出
public class ArrayDequeStack{
   public static void main(String[] args)
   {
      ArrayDeque stack=new ArrayDeque();
      //将三个元素push入“栈”
      stack.push("绿色");
   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值