`

(转)Java中的queue和deque

    博客分类:
  • java
 
阅读更多

队列(queue)是一种常用的数据结构,可以将队列看做是一种特殊的线性表,该结构遵循的先进先出原则。Java中,LinkedList实现了Queue接口,因为LinkedList进行插入、删除操作效率较高 
相关常用方法: 
boolean offer(E e):将元素追加到队列末尾,若添加成功则返回true。 
E poll():从队首删除并返回该元素。 
E peek():返回队首元素,但是不删除 
示例代码:

public class QueueDemo {
    public static void main(String [] args) {
        Queue<String> queue = new LinkedList<String>();
        //追加元素
        queue.offer("one");
        queue.offer("two");
        queue.offer("three");
        queue.offer("four");
        System.out.println(queue);
        //从队首取出元素并删除
        String poll = queue.poll();
        System.out.println(poll);
        System.out.println(queue);
        //从队首取出元素但是不删除
        String peek = queue.peek();
        System.out.println(peek);
        System.out.println(queue);
        //遍历队列,这里要注意,每次取完元素后都会删除,整个
        //队列会变短,所以只需要判断队列的大小即可
        while(queue.size() > 0) {
            System.out.println(queue.poll());
        }
    }
}

 

运行结果: 
[one, two, three, four] 
one 
[two, three, four] 
two 
[two, three, four] 
two 
three 
four

双向队列(Deque),是Queue的一个子接口,双向队列是指该队列两端的元素既能入队(offer)也能出队(poll),如果将Deque限制为只能从一端入队和出队,则可实现栈的数据结构。对于栈而言,有入栈(push)和出栈(pop),遵循先进后出原则

常用方法如下: 
void push(E e):将给定元素”压入”栈中。存入的元素会在栈首。即:栈的第一个元素 
E pop():将栈首元素删除并返回。 
示例代码:

public class DequeDemo {
    public static void main(String[] args) {
        Deque<String> deque = new LinkedList<String>();
        deque.push("a");
        deque.push("b");
        deque.push("c");
        System.out.println(deque);
        //获取栈首元素后,元素不会出栈
        String str = deque.peek();
        System.out.println(str);
        System.out.println(deque);
        while(deque.size() > 0) {
            //获取栈首元素后,元素将会出栈
            System.out.println(deque.pop());
        }
        System.out.println(deque);
    }
}

 

运行结果: 
[c, b, a] 

[c, b, a] 



[]

分享到:
评论

相关推荐

    Using_Java_Queue.zip_java队列

    Java提供了多种队列实现,但它们都基于两个主要的接口:`Queue` 和 `Deque`。`Queue` 是基本的队列接口,而 `Deque`(双端队列)提供了更丰富的功能,包括在两端添加和删除元素。`LinkedList` 类实现了这两个接口,...

    Java容器类源码详解 Deque与ArrayDeque

    Java 容器类源码详解 Deque 与 ArrayDeque Java 容器类源码详解 Deque 与 ArrayDeque 主要介绍了 Java ...Deque 和 ArrayDeque 是 Java 容器类中非常重要的组件,提供了双端队列的实现,能够满足各种队列操作的需求。

    Java6.0中文API

    此外,还有TreeMap和TreeSet实现了有序的集合,以及Queue和Deque接口支持队列和双端队列操作。 2. I/O流:Java的IO流系统提供了一套完整的输入/输出处理机制,包括字符流和字节流,以及缓冲流、转换流和对象流。NIO...

    Queue实现类1

    1. Java 官方文档,了解 Collection、Queue 和 Deque 接口的详细说明。 2. OpenJDK 源码,查看 ArrayDeque 和 PriorityQueue 的具体实现细节。 3. 书籍《Java 核心技术卷 I》和《算法导论》,获取关于数据结构和算法...

    Java使用Deque实现堆栈的方法

    在Java编程中,堆栈(Stack)是一种基于后进先出...总之,Java中的`Deque`接口和`ArrayDeque`类为实现堆栈提供了一种高效且灵活的方式。通过使用这些工具,开发者可以在各种场景下构建堆栈功能,满足不同业务需求。

    Java数据结构实现之Queue.zip

    1. **LinkedList**:`java.util.LinkedList` 是一个双向链表,同时实现了`Deque`接口,可以作为队列使用。插入和删除操作的时间复杂度为O(1),但在随机访问元素时效率较低。 2. **ArrayDeque**:`java.util....

    JAVA基本5种数据结构的实现。

    在Java编程语言中,数据结构是组织和管理数据的关键元素,它们提供了高效访问和操作数据的方式。本主题将深入探讨Java中的五种基础数据结构:链表、队列、栈、双端队列(deque)以及堆。我们将通过分析给定的源代码...

    java队列之queue用法实例分析

    实现阻塞接口的Queue包括java.util.concurrent中的BlockingQueue接口和五个阻塞队列类。BlockingQueue接口是一个带有一点扭曲的FIFO数据结构。不是立即从队列中添加或者删除元素,线程执行操作阻塞,直到有空间或者...

    java 集合(list-queue-set)学习

    在Java中,集合主要分为两大接口:Map和Collection。本文将重点探讨Collection接口下的List、Queue和Set。 首先,List接口是Java集合框架中用于存储有序元素的接口,它允许元素重复,并且可以通过索引来访问元素。...

    Java_Stack_Queue:Java中使用链表的堆栈和队列实现

    在Java编程语言中,堆栈(Stack)和队列(Queue)是两种基本的数据结构,它们在处理数据存储和操作时扮演着重要角色。本文将深入探讨如何使用链表(LinkedList)来实现这两种数据结构。 首先,让我们了解堆栈和队列...

    java工具类 java开发助手 java util

    1. 集合框架:Java中的集合框架是`java.util`包的核心,包括List、Set、Queue和Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。它们提供了存储和操作对象的基本功能,支持动态扩展和多种操作,如...

    java代码-java Queue 应用,先进先出用法实例, 只保留200个, 将其他数据按先进先出的规则弹出,LinkedList 实现了 Queue接口,

    `LinkedList`是Java中实现双向链表的数据结构,它同时实现了`List`、`Deque`和`Queue`接口。这意味着`LinkedList`不仅可以作为列表使用,也可以作为双端队列或普通队列使用。它的优势在于插入和删除元素(尤其是位于...

    最全的java学习笔记(必看).pdf

    Queue和Deque接口用于表示队列和双端队列数据结构,支持FIFO(先进先出)操作。 Java提供了对文件和目录操作的支持,File类用于表示文件系统中的文件和目录。Java I/O流(如RandomAccessFile、FileInputStream、...

    java中集合容器的详细介绍

    Java中的集合框架是Java编程语言中的一个重要组成部分,它提供了一种高效、灵活的方式来存储和操作对象。集合框架的核心是各种接口和类,它们定义了不同的数据结构,如列表(List)、队列(Queue)、集(Set)和映射(Map)...

    java资料各种集合

    Java集合框架是Java编程语言中不可或缺的一部分,它为开发者提供了数据结构和算法的实现,使得在处理对象集合时更加高效和便捷。在这个“java资料各种集合”中,我们可以期待找到关于Java集合框架的各种深入讲解和...

    数据结构教程(java语言描述)-源码和课件-李春葆

    3. **栈**:栈是一种后进先出(LIFO)的数据结构,Java中的Deque接口和ArrayDeque类可以用来实现栈。理解栈的应用场景,如表达式求值、回溯算法等。 4. **队列**:队列是一种先进先出(FIFO)的数据结构,Java中的...

    Apress的《Java Collections》

    在高级主题中,作者会介绍更复杂的数据结构,如Queue、Deque和PriorityQueue,以及它们在并发编程中的应用。Queue是先进先出(FIFO)的数据结构,Deque允许两端添加和移除元素,而PriorityQueue则按照优先级排序元素...

    Java容器类接口框架总览1

    本文将深入探讨Java中的Collection接口及其子接口,包括List、Queue、Deque、Map以及Set接口,同时也会介绍迭代器的相关概念。 1. **Collection接口** Collection是Java集合框架的顶级接口,它是Queue、List和Set...

    java技术集合体系图

    在Java编程语言中,集合框架是核心特性之一,它提供了数据结构和算法的实现,使得开发者可以高效地存储和操作对象。"java技术集合体系图"涵盖了Java集合框架的重要概念和组件,对于深入理解Java编程至关重要。下面...

    Java程序设计语言进阶篇(原书第8版)

    此外,书中还会涵盖Java集合框架,包括List、Set、Map接口的实现类以及高级数据结构如Queue和Deque。这些数据结构和算法的熟练运用能显著提高代码的效率和可读性。 对于测试和调试,书中会介绍JUnit框架进行单元...

Global site tag (gtag.js) - Google Analytics