`

Java集合: Queue和Deque

    博客分类:
  • Java
 
阅读更多
Queue http://my.oschina.net/kevinair/blog/191434
Deque http://my.oschina.net/kevinair/blog/191630



Queue
java.util.Queue接口是java.util.Collection子接口。
它代表一个有序的对象列表,就像List一样,但是它的使用有略微的区别。
Queue被设计成从末端插入并且从头部删除的形式。

Queue的实现类
java.util.LinkedList
java.util.PriorityQueue

LinkedList是一个非常标准的队列实现。
PriorityQueue保存数据默认是根据内部的自然排序,如果指定了Comparator比较器,

则会使用比较器进行排序。

添加,访问和删除元素
添加元素使用继承自Collection的add()方法。
Queue queue = new LinkedList();
queue.add("1");
queue.add("2");
queue.offer("3");
 
// peek = 1
Object peek = queue.peak();
 
// element = 1
Object element = queue.element();
 
// poll = 1
Object poll = queue.poll();
 
// remove = 2
Object remove = queue.remove();

peek()方法,返回当前queue中的首元素但不删除该元素,如果队列为空则返回null。
element()方法与peek()方法类似,但是当队列为空时抛出异常。
poll()方法,返回并且删除queue中首元素,队列为空返回null。
remove()方法与poll()方法类似,但当队列为空时抛出异常。
add()与offer()方法都将再末尾添加一个元素。
Queue queueA = new LinkedList();
 
queueA.add("element 0");
queueA.add("element 1");
queueA.add("element 2");
 
// 使用 Iterator
Iterator iterator = queueA.iterator();
while(iterator.hasNext(){
  String element = (String) iterator.next();
}
 
// 使用 for-loop
for(Object object : queueA) {
    String element = (String) object;
}






Deque
java.util.Deque接口是java.util.Queue接口的子接口。
它代表的队列包含从队列两端添加和删除元素。
"Deque" 是 "Double Ended Queue"的简称。

Deque的实现类
java.util.ArrayDeque
java.util.LinkedList

LinkedList是一个标准的deque/queue实现。
ArrayDeque内部使用数组保存元素,如果元素数量超过了内部数组的大小,内部将产生一个新的数组,

然后将数据转移过去,用来满足需求,换句话说,ArrayQeque自身有扩容功能。

添加,访问和删除元素
向Deque中添加元素除了add()和offer()方法以外,
还可以调用addLast()插入到末尾,addFirst()插入到头部。
offerFirst()插入到头部,offerLast()插入到末尾。
push()插入到头部,

Deque deque = new LinkedList();
deque.add("element1");         // 在末尾添加元素
deque.addFirst("element2");    // 在头部添加元素
deque.addLast("element3");     // 在末尾添加元素
deque.offerFirst("element4");  // 在头部添加元素
deque.offerLast("element5");   // 在末尾添加元素

出队列的方法除了queue中提到的
peek();  
element();  
poll(); 
remove();


Deque还新增了
getFirst()方法,返回头部元素, 不删除该元素
getLast()方法,返回末尾元素,不删除该元素
peekFirst()方法,返回头部元素,不删除该元素
peekLast()方法,返回末尾元素,不删除该元素
pollFirst()方法,返回头部元素并且删除该元素
pollLast()方法,返回尾部元素并且删除该元素
removeFirst()方法,返回头部元素并且删除该元素
removeLast()方法,返回尾部元素并且删除该元素
removeFirstOccurrence(Object)方法,由头至尾删除第一次出现在列表中的元素
removeLastOccurrence(Object)方法,由尾至头删除第一次出现在列表中的元素
pop()从末尾取出并且删除元素

对元素进行遍历
Deque deque = new LinkedList();
deque.add("element0");
deque.add("element1");
deque.add("element2");
 
// 使用 Iterator
Iterator iterator = dequeA.iterator();
while(iterator.hasNext(){
  String element = (String) iterator.next();
}
 
// 使用 for-loop
for(Object object : dequeA) {
    String element = (String) object;
}
分享到:
评论

相关推荐

    第16章:Java集合.zip_java 集合_java集合

    Java集合框架是Java编程语言中的一个核心特性,它为存储、管理和操作对象提供了一组统一的接口和类。本章内容主要围绕Java集合框架展开,包括ArrayList、LinkedList、HashSet、HashMap等常见数据结构的使用方法及其...

    【死磕Java集合】-集合源码分析.pdf

    Java集合框架是Java语言中一个非常重要的组件,提供了多种数据结构和算法来存储和操作数据。在Java集合框架中,LinkedList、ArrayList、HashMap、TreeMap等都是非常常用的数据结构。本文将对Java集合框架的源码进行...

    java集合框架全面进阶

    Java集合框架主要由接口和类组成,如List、Set、Queue、Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。 1. **List接口**:List接口是有序的集合,允许重复元素,并且元素都有索引。ArrayList和...

    java技术集合体系图

    "java技术集合体系图"涵盖了Java集合框架的重要概念和组件,对于深入理解Java编程至关重要。下面我们将详细探讨这个话题。 首先,"Collection.jpg"可能是一个展示了Java集合接口层次结构的图表。在Java集合框架中,...

    Java集合类矩阵图

    4. 其他集合类:如Queue、Deque等,它们分别代表队列和双端队列,适用于数据的先进先出(FIFO)操作。 Java集合类矩阵图通常会展示以下内容: - 接口与实现类的关系:通过图形化的方式展示接口与其实现类的层级结构。...

    java集合,java集合

    以上只是Java集合框架的一部分核心概念,实际开发中还有许多其他类和接口,如Deque(双端队列)、NavigableSet(可导航的集合)等,都为开发者提供了丰富的选择和强大的功能。理解和熟练使用Java集合框架,是成为一...

    java集合框架图

    在Java集合框架中,主要有六种核心接口:`Collection`, `Set`, `List`, `Queue`, `Deque`, 和 `Map`。此外,还有五个抽象类以及多个实现类,它们共同构成了Java集合框架的基础。 #### 二、核心接口介绍 1. **`...

    Java-collection-frame.rar_Java集合框架

    Java集合框架是Java编程语言中一个至关重要的组成部分,它为数据存储、管理和操作提供了丰富的类库。这个框架包括了各种接口、类以及实现,使得开发者能够高效地处理对象的集合,无论是小型还是大型数据集。在Java...

    Java集合类性能分析

    - **集合接口**:Java集合框架中有六种主要的集合接口,它们分别是`Collection`、`List`、`Set`、`Queue`、`Deque`和`Map`。这些接口构成了整个集合框架的基础,定义了集合类应该具备的基本行为和功能。 - `...

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

    Queue是Java集合框架中的队列接口,用于处理先进先出(FIFO)的数据结构。LinkedList除了实现List接口外,还实现了Deque接口,因此它能作为双端队列使用,支持头尾插入和删除。ArrayDeque是另外一种高效的双端队列...

    Java集合框架及泛型

    Java集合框架是Java编程语言中一个非常重要的组成部分,它提供了一组高效的数据结构和操作这些数据结构的方法。泛型则是Java在J2SE 5.0版本引入的一个特性,极大地提高了代码的类型安全性和可读性。下面我们将深入...

    Java集合类层次结构

    Java集合类层次结构是Java编程语言中用于存储和管理对象的核心框架。这个层次结构由多个接口和类组成,为开发者提供了灵活且强大的数据结构选择。理解这个层次结构对于编写高效、可维护的Java代码至关重要。 在Java...

    java集合资料整理

    Java集合框架是Java标准库的一部分,它提供了一套丰富的API来存储和操作集合中的对象。集合框架的核心是接口和它们的实现类,这些接口和实现类共同构成了一个高度灵活且功能强大的数据结构库。 #### 二、集合框架...

    Java集合面试问题

    Java集合框架是Java平台的核心组件之一,它为开发者提供了多种数据结构来存储和操作对象集合。Java集合主要包括两大接口:`Collection` 和 `Map`。 #### Collection接口: - **特点**:它代表一个元素列表,可以...

    java集合类详解

    Java集合类是Java语言中用来存储数据的结构,它们是Java开发中非常重要的组件。在Java 2平台之前,集合框架的组成较为零散,自Java 2平台的JDK 1.2版本之后,引入了集合框架(Collections Framework),为集合类提供...

    java集合类的相关资料

    首先,Java集合框架的核心接口包括List、Set、Queue和Map。这些接口定义了各种集合的行为,而具体的实现类则提供了实际的数据存储和操作功能。 1. **List接口**:List是一种有序的集合,允许元素重复,并且可以按照...

    Java集合类详解总结

    Java集合框架主要包括`Collection`、`Set`、`List`、`Queue`、`Deque`、`Map`等接口和它们的具体实现类如`ArrayList`、`LinkedList`、`Vector`、`Stack`、`HashSet`、`HashMap`等。下面将对这些核心概念和类进行深入...

    java的集合帮助文档

    Java集合框架是Java编程语言中的一个核心特性,它为存储、管理和操作对象提供了一组统一的接口和类。集合框架的使用极大地提高了代码的可读性、可维护性和效率。以下是对Java集合学习的一些关键知识点的详细解释: ...

Global site tag (gtag.js) - Google Analytics