队列(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
[c, b, a]
c
b
a
[]
相关推荐
Java提供了多种队列实现,但它们都基于两个主要的接口:`Queue` 和 `Deque`。`Queue` 是基本的队列接口,而 `Deque`(双端队列)提供了更丰富的功能,包括在两端添加和删除元素。`LinkedList` 类实现了这两个接口,...
Java 容器类源码详解 Deque 与 ArrayDeque Java 容器类源码详解 Deque 与 ArrayDeque 主要介绍了 Java ...Deque 和 ArrayDeque 是 Java 容器类中非常重要的组件,提供了双端队列的实现,能够满足各种队列操作的需求。
此外,还有TreeMap和TreeSet实现了有序的集合,以及Queue和Deque接口支持队列和双端队列操作。 2. I/O流:Java的IO流系统提供了一套完整的输入/输出处理机制,包括字符流和字节流,以及缓冲流、转换流和对象流。NIO...
1. Java 官方文档,了解 Collection、Queue 和 Deque 接口的详细说明。 2. OpenJDK 源码,查看 ArrayDeque 和 PriorityQueue 的具体实现细节。 3. 书籍《Java 核心技术卷 I》和《算法导论》,获取关于数据结构和算法...
在Java编程中,堆栈(Stack)是一种基于后进先出...总之,Java中的`Deque`接口和`ArrayDeque`类为实现堆栈提供了一种高效且灵活的方式。通过使用这些工具,开发者可以在各种场景下构建堆栈功能,满足不同业务需求。
1. **LinkedList**:`java.util.LinkedList` 是一个双向链表,同时实现了`Deque`接口,可以作为队列使用。插入和删除操作的时间复杂度为O(1),但在随机访问元素时效率较低。 2. **ArrayDeque**:`java.util....
在Java编程语言中,数据结构是组织和管理数据的关键元素,它们提供了高效访问和操作数据的方式。本主题将深入探讨Java中的五种基础数据结构:链表、队列、栈、双端队列(deque)以及堆。我们将通过分析给定的源代码...
实现阻塞接口的Queue包括java.util.concurrent中的BlockingQueue接口和五个阻塞队列类。BlockingQueue接口是一个带有一点扭曲的FIFO数据结构。不是立即从队列中添加或者删除元素,线程执行操作阻塞,直到有空间或者...
在Java中,集合主要分为两大接口:Map和Collection。本文将重点探讨Collection接口下的List、Queue和Set。 首先,List接口是Java集合框架中用于存储有序元素的接口,它允许元素重复,并且可以通过索引来访问元素。...
在Java编程语言中,堆栈(Stack)和队列(Queue)是两种基本的数据结构,它们在处理数据存储和操作时扮演着重要角色。本文将深入探讨如何使用链表(LinkedList)来实现这两种数据结构。 首先,让我们了解堆栈和队列...
1. 集合框架:Java中的集合框架是`java.util`包的核心,包括List、Set、Queue和Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。它们提供了存储和操作对象的基本功能,支持动态扩展和多种操作,如...
`LinkedList`是Java中实现双向链表的数据结构,它同时实现了`List`、`Deque`和`Queue`接口。这意味着`LinkedList`不仅可以作为列表使用,也可以作为双端队列或普通队列使用。它的优势在于插入和删除元素(尤其是位于...
Queue和Deque接口用于表示队列和双端队列数据结构,支持FIFO(先进先出)操作。 Java提供了对文件和目录操作的支持,File类用于表示文件系统中的文件和目录。Java I/O流(如RandomAccessFile、FileInputStream、...
Java中的集合框架是Java编程语言中的一个重要组成部分,它提供了一种高效、灵活的方式来存储和操作对象。集合框架的核心是各种接口和类,它们定义了不同的数据结构,如列表(List)、队列(Queue)、集(Set)和映射(Map)...
Java集合框架是Java编程语言中不可或缺的一部分,它为开发者提供了数据结构和算法的实现,使得在处理对象集合时更加高效和便捷。在这个“java资料各种集合”中,我们可以期待找到关于Java集合框架的各种深入讲解和...
3. **栈**:栈是一种后进先出(LIFO)的数据结构,Java中的Deque接口和ArrayDeque类可以用来实现栈。理解栈的应用场景,如表达式求值、回溯算法等。 4. **队列**:队列是一种先进先出(FIFO)的数据结构,Java中的...
在高级主题中,作者会介绍更复杂的数据结构,如Queue、Deque和PriorityQueue,以及它们在并发编程中的应用。Queue是先进先出(FIFO)的数据结构,Deque允许两端添加和移除元素,而PriorityQueue则按照优先级排序元素...
本文将深入探讨Java中的Collection接口及其子接口,包括List、Queue、Deque、Map以及Set接口,同时也会介绍迭代器的相关概念。 1. **Collection接口** Collection是Java集合框架的顶级接口,它是Queue、List和Set...
在Java编程语言中,集合框架是核心特性之一,它提供了数据结构和算法的实现,使得开发者可以高效地存储和操作对象。"java技术集合体系图"涵盖了Java集合框架的重要概念和组件,对于深入理解Java编程至关重要。下面...
此外,书中还会涵盖Java集合框架,包括List、Set、Map接口的实现类以及高级数据结构如Queue和Deque。这些数据结构和算法的熟练运用能显著提高代码的效率和可读性。 对于测试和调试,书中会介绍JUnit框架进行单元...