Queue 队列

理解:

队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。
Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Deque接 口。

假设下面是一个队列:
队尾 ---->[1,2,3,4,5]---> 队头
数据从队尾进,从队头出。即先进先出原则。

java5 中新增加了java.util.Queue接口,用以支持队列的常见操作。该接口扩展了java.util.Collection接口。

注意:

1.Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取并移出元素。它们的优点是通过返回值可以判断成功与否,add()和remove()方法在失败的时候会抛出异常。
2.如果要使用前端而不移出该元素,使用element()或者peek()方法。

值得注意的是LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。

应用场景:

多线程中应用

基本用法

使用起来跟list这些集合没有什么区别

public class QueueTest {
       public static void main(String[] args) {
               Queue<String> queue = new LinkedList<String>();
               queue.offer("a");        //添加元素
               queue.offer("b");
               queue.offer("c");
               queue.offer("d");
               queue.offer("e");
               for (String q : queue) {
                       System.out.println(q);
               }
               System.out.println("poll=" + queue.poll());        //移除第一个元素

               for (String q : queue) {
                       System.out.println(q);
               }

               System.out.println("peek=" + queue.peek()); // 返回第一个元素
               for (String q : queue) {
                       System.out.println(q);
               }
       }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、队列的定义 队列也是数据结构的其中一种,和栈相反的是。队列是只允许在一端进行插入,在另一端进行删除的线性表。 ...
    bryanrady_wang阅读 11,490评论 0 0
  • 4 Queue队列 前面几篇,我们介绍了Java集合中常用到的对象。本篇中,我们再来说说Queue队列的故事。 对...
    贾博岩阅读 8,308评论 0 3
  • C++队列queue模板类的定义在头文件中,queue 模板类需要两个模板参数,一个是元素类型,一个容器类型,元素...
    杰伦哎呦哎呦阅读 5,839评论 0 0
  • 今天儿子和两个小伙伴到田园里玩,挖了好多荠菜,回来问我,可以包荠菜混沌吗?我说可以呀,他们三个小子就各自分工买肉,...
    刘美银阅读 1,342评论 0 0
  • 一、普遍困扰大家的问题 1.房价太贵,买不起。买一二线城市的房子,首付至少要大几十万。2.通货膨胀太快,存款贬值。...
    陶维英阅读 21,793评论 22 97

友情链接更多精彩内容