7.8java集合之队列

本文介绍了Java集合中的队列Queue,包括其先进先出(FIFO)特性,常用操作如添加、删除元素的方法。接着讲解了PriorityQueue优先队列,其出队顺序取决于元素的优先级,要求元素实现Comparable接口或使用Comparator。最后,讨论了Deque双端队列,可以两头添加和移除元素,ArrayDeque和LinkedList是其常见实现类。
摘要由CSDN通过智能技术生成

Queue(队列)

队列是一种常用的集合,实现了先进先出(FIFO:First In First Out)。
和list区别在于,list可以实现任意位置添加删除,而队列只能在尾部添加,首部取出
java标准库中Queue定义了几个方法:

  • int size():获取队列长度;
  • boolean add(E)/boolean offer(E):添加元素到队尾;
  • E remove()/E poll():获取队首元素并从队列中删除;
  • E element()/E peek():获取队首元素但并不从队列中删除。

方法中可以看到存取方法都有两个,是因为其在添加或删除失败时返回值不同,以及其报错方式不同。
报错方式
LinkedList实现了List和Queue的接口,将其当做list使用list的方法,当成Queue使用队列的方法。
注意:不能讲null存入队列,否则容易出现取值错误,因为在取值时不知道是空队列还是空元素。

PriorityQueue(优先队列)

PriorityQueue与Queue的区别在于,优先队列的出队顺序与元素的优先级有关,对其调用remove和poll方法返回的总是优先级最高的元素。
要是用PriorityQueue需给每个元素定义优先级。
如何定义优先级:放入优先队列中的元素需要实现Comparable接口,该接口在之前TreeSet和TreeMap时使用过。实现该接口还需要覆写该方法的compare()方法。
假如该类并没有实现Comparable接口,PriorityQueue允许我们创建一个新的Comparator来判断两个元素的顺序,前提是该Comparator要实现Comparator接口和compare方法。

Queue<User> q = new 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值