java.util.Queue用法
转载原文地址:http://www.cnblogs.com/linjiqin/archive/2013/05/30/3107656.html
队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。
在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。
在java5中新增加了java.util.Queue接口,用以支持队列的常见操作。该接口扩展了java.util.Collection接口。
Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取并移出元素。它们的优点是通过返回值可以判断成功与否,add()和remove()方法在失败的时候会抛出异常。 如果要使用前端而不移出该元素,使用
element()或者peek()方法。
值得注意的是LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。
package com.ljq.test;
import java.util.LinkedList;
import java.util.Queue;
public class QueueTest {
public static void main(String[] args) {
//add()和remove()方法在失败的时候会抛出异常(不推荐)
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("===");
System.out.println("poll="+queue.poll()); //返回第一个元素,并在队列中删除
for(String q : queue){
System.out.println(q);
}
System.out.println("===");
System.out.println("element="+queue.element()); //返回第一个元素
for(String q : queue){
System.out.println(q);
}
System.out.println("===");
System.out.println("peek="+queue.peek()); //返回第一个元素
for(String q : queue){
System.out.println(q);
}
}
}
相关推荐
1. 集合框架:Java.util包是Java集合框架的基础,包括List、Set、Queue和Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。这些集合类为存储和操作对象提供了灵活的方式。例如,ArrayList实现了...
`BlockingQueue` 是 `java.util.concurrent` 包中的一个接口,它扩展了传统的 `Queue` 接口,并引入了阻塞特性。这意味着当队列为空时,从队列中移除元素的操作将会阻塞;同样地,当队列满时,向队列添加元素的操作...
Java.util包是Java标准库中的核心包之一,它包含了大量用于日常编程的工具类和接口。这个包在Java 2版本中得到了显著增强...通过熟练掌握和使用java.util包中的类和接口,开发者能够更加高效地处理数据和实现复杂逻辑。
### Java.util包源码知识点概览 #### 一、Overview `java.util`包是Java标准库中的一个重要组成部分,提供了大量的实用工具类和接口来处理集合数据类型、日期时间操作、随机数生成等功能。这份PDF文档包含了`java....
本文将详细介绍`java.util.concurrent`包中的同步器框架的设计理念、实现机制、使用方法及性能表现,帮助开发者更好地理解和使用这一重要的并发工具。 #### 设计理念与实现 同步器框架的核心是`...
本教程重点讲解了Java.util包中的主要组件和使用方法,旨在帮助初学者深入理解并熟练运用这个包。 1. **集合框架**: Java.util包是Java集合框架的基础,包括List、Set、Queue等接口以及ArrayList、LinkedList、...
本篇文章将深入探讨如何使用`java.util.concurrent` 实现线程池队列,以及其中的关键概念和技术。 线程池是一种线程使用模式,通过预先创建并维护一定数量的工作线程来避免频繁创建和销毁线程的开销。在Java中,`...
7. **实用工具类**:`java.util.Arrays`和`java.util.Collections`提供静态方法,用于操作数组和集合,如排序、复制和填充。 8. **并发编程**:`java.util.concurrent`包虽然不在`java.util`下,但与之紧密相关,...
1. **LinkedList**:`java.util.LinkedList` 是一个双向链表,同时实现了`Deque`接口,可以作为队列使用。插入和删除操作的时间复杂度为O(1),但在随机访问元素时效率较低。 2. **ArrayDeque**:`java.util....
`java.util`中的许多类都使用了泛型,如ArrayList,了解其背后的工作原理和边界类型擦除。 4. **日期和时间API**:`java.util.Date`和`Calendar`类在早期版本中用于处理日期和时间,但在Java 8中被`java.time`包...
9. 泛型:`java.util`包中的许多类和接口都使用了泛型,以提高类型安全性和代码可读性。 10. 动态代理:`Proxy`类和`InvocationHandler`接口用于创建动态代理,可以用来实现接口的动态方法调用。 理解`java.util`...
Java 6 API中文版是Java开发人员的重要参考资料,它提供了详细的类库文档,使得开发者能够更好地理解和使用Java平台的标准类库。这个API文档是中文语言版本,方便了中文用户阅读和学习,避免了语言障碍,提高了开发...
Java语言的Util类详细介绍 Java语言的Util类是Java开发中非常重要的一部分,它提供了一系列的类来实现基本的数据结构,如线性表、链表等。这些类均在java.util包中。 Collection接口是Java中最基本的集合接口,一...
Java Util包,全称为`java.util`,是Java标准库中的核心包之一,包含了大量用于通用编程任务的类和接口。这个包自Java 1.0版本以来就存在,随着时间的发展,不断添加了新的功能和类,使得Java程序员在处理各种常见...
Java 8引入了新的日期时间API(`java.time`包),但`java.util.Date`和`java.util.Calendar`仍然广泛使用。 7. Comparator接口:Comparator用于比较对象的顺序,可以自定义比较规则。在集合排序或TreeMap/TREEset中...
import java.util.Queue; import java.util.concurrent.LinkedBlockingQueue; public class SimpleSpider { private Queue<String> urls = new LinkedBlockingQueue(); private Set<String> visited = new ...
Java提供了`java.util.Queue`接口及其实现类如`LinkedList`来实现队列。 5. **树**:非线性数据结构,包括二叉树、平衡树(AVL树、红黑树)、B树、B+树等。二叉树是最简单的形式,每个节点最多有两个子节点,Java的...
`java.util`包是Java标准库的核心部分,包含了大量的工具类和集合框架,是日常开发中频繁使用的组件。`java.util_source_learning`项目提供了对JDK源码的学习资源,帮助开发者深入探索这个包内的实现细节。 在JDK...
首先,让我们了解一下`java.util.Queue`接口提供的主要方法: 1. `void add(E e)`: 向队列尾部添加元素,如果队列已满,则抛出`IllegalStateException`。 2. `E remove()`: 移除并返回队列头部的元素,如果队列为空...
Java语言在设计时就考虑到了代码的复用性和可维护性,因此提供了许多内置的工具类,这些工具类分布在不同的包下,极大地丰富了Java的功能并简化了...了解并熟练使用这些工具类,对于提升Java编程技能是非常有帮助的。