Java数据结构使用总结(4)-Queue接口

Queue接口用于模拟队列这种数据结构,即先进先出。队列不允许随机访问其中的元素。常用方法如下:

取出元素:

  • Object element():获取队列头部元素,不删除,如果队列为空抛异常
  • Object peek():获取队列头部元素,不删除,如果队列为空返回null
  • Object poll():获取队列头部元素,删除,如果队列为空返回null

添加元素

  • void add(Object obj):将元素添加到队列尾部
  • boolean offer(Object obj):将元素添加到队列尾部,如果队列有长度限制,建议使用此方法
ProorityQueue类
PriorityQueue为Queue接口的实现类,具有队列的性质。但是该队列会将内部元素进行排序,即有序的队列。

PriorityQueue实现有序的方法和TreeSet相同。方式如下:

  • 队列内部元素实现Comparable接口,并重写其中的int compareTo(Object obj)方法,定制排序规则
  • 创建PriorityQueue对象时,传入Comparator对象,该对象的int compare(Object obj1,Object obj2)负责排序规则
Deque接口

Deque接口实现Queue接口,它表示双端队列。即允许从两段取出元素和添加元素,常用方法如下:

  • xxxFirst()/xxxLast()存在Queue常用方法的两套,例如:boolean offerFirst(Object obj)

Deque接口具有栈的特性,即弹栈和压栈,方法如下:

  • Object pop():弹出栈顶元素,该元素会从栈中删除
  • void push(Object obj):向栈的添加元素
ArrayDeque类

ArrayDeque是Deque的实现类,是基于数组实现的,内部维护Object[],数组默认长度16。ArrayDeque和ArrayDeque实现机制相同。

因此ArrayDeque不仅具有双端队列(先进先出)的特性;也有栈(后进先出)的特性

LinkedList类

LinkedList实现了List接口,特性之一是可根据索引随机访问集合内元素;同时还实现了Deque接口,可以被当成双端队列和栈使用。内部以链表形式保存元素,随机访问性能较差,插入和删除性能优秀

性能比较

  • 数组存储单元连续,随机访问速度较快,ArrayList集合应该使用get遍历元素;LinkedList应该使用迭代器遍历集合
  • 如果经常要插入、删除操作,则建议使用LinkedList集合;ArrayList要经常重新分配内部数组大小,性能较差
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值