java+queue+se_Java的Queue集合

Queue用于模拟队列这种数据结构,队列通常是指“先进先出”FIFO的容器,队列的头部保存在队列中存放时间最长的元素,队列的尾部保存在队列中存放时间最短的元素。Queue接口中定义了如下几个方法void add(Object e)将指定的元素加入到此队列的尾部;Object element()获取队列头部的元素,但是不删除该元素。boolean offer(Object e):将指定的元素加入到此队列的尾部。Object peek()获取队列的头部元素,但不删除该元素,如果队列为空返回null。Object poll()获取队列的头部元素,并删除该元素。如果队列为空返回null。Object remove():获取队列头部的元素,并删除该元素。Queue接口有一个priorityQueue实现类,除此之外Queue还有一个Deque的接口,Deque代表一个“双端队列”,双端队列可以同时从两端来添加、删除元素,因此Deque的实现类即可当成队列使用也可以当成栈使用。

1.PriorityQueue是一个比较标准的队列实现类,PriorityQueue保存队列元素的顺序并不是按加入的队列的顺序,而是按照队列元素大小进行重新排列。因此当代调用peek()方法或者poll()方法取出队列的元素时,并不是取出最先进入队列的元素,而是取出队列中最小的元素。PriorityQueue不允许插入null元素,PriorityQueue的元素有两种排序方式,一种自然排序(必须实现Comparable接口)另外一种定制排序(要传入一个Comparator对象)

2.Deque接口是Queue接口的子接口,它代表这一个双端的队列,允许通过这些方法从两端来操作元素,void addFrist(Object e)将指定元素插入该双端队列的开头;void addLast(Object e)将指定的元素插入到双端队列的末尾;Iterator descendingIterator():返回该队列对应的迭代器,该迭代器将逆向顺序来迭代队列的元素。Object getFrist()获取但不能删除双端队列的的一个元素,Object getLast()获取但不删除双端元素的末尾队列。Object peekFrist()获取但不删除双端元素的第一个也元素。Object poolFrist()获取并删除双端队列的第一个元素。boolean offerFrist(Object e)将指定的元素插入到双端队列的开头。Object pop():将一个元素push进该双端队列所表示的栈定顶。void push(Object e)将一个元素push进该双端队列所表示的栈的栈顶。Object removeFrist()获取并删除该双端队列的第一个元素。Object removeFristOccurrence(Object o)删除该双端队列的第一次出现的元素o。Deque接口提供了一个典型的实现类:ArrayDeque,它是基于数组实现的双端队列,创建Deque时同样可指定一个numElement参数指定数组的长度,Deque底层的数组的长度为16,它底层也是一个动态的可重分配的Object[] 数组来存储集合元素。ArrayDeque即可用做栈也可用作队列来使用。

3.LinkedList类是List接口的实现类,这意味这可以根据索引来随机访问数组元素,而它又实现了Deque接口,所以他也可以当做双端队列来使用,因此既可以当成栈也可以当成队列来使用。LinkedList作为List集合、双端队列、栈用法,是一个功能非常强大的集合类。但LinkedList与ArrayList、ArrayDeque的实现机制完全不同,ArrayList、ArrayDeque内部以数组的形式保存集合,随机访问元素性能较好,而LinkedList内部以链表的形式保存数据,随机访问性能较差,但插入、删除元素性能较好,Vertor也是数组子形式存储但是他线程安全所以性能都不好。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值