`
annan211
  • 浏览: 460105 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java 高性能运算-- 双端队列

 
阅读更多

    JDK 1.6中 提供了一种双端队列,简称 Deque.  这里简要介绍 三种双端队列, LinkedList ArrayDeque 和 LinkedBlockingDeque,他们都实现了双端队列Deque接口,其中LinkedList使用链表实现了双端队列, ArrayDeque 使用数组实现双端队列。通常情况下,由于 ArrayDeque基于数组实现,拥有搞笑的随机访问性能,因此ArrayDeque 具有更好的遍历性能,但是当队列的大小变化较大时,ArrayDeque 需要重新分配内存,并进行数组赋值,在这种情况下,基于链表的LinkedList 没有内存调整和数组赋值的负担,性能表现会较好。但无论是LinkedList或是ArrayDeque,他们都不是线程安全的。


   LinkedBlockingDeque 是一个线程安全的双端队列的实现。可以说,他已经是最为复杂的一个队列实现,在内部视线中,LinkedBlockingDeque 使用链表结构。每一个队列节点都维护一个前驱节点和一个后驱节点。LinkedBlockingDeque 没有进行读写锁的分离,因此同一时间只能有一个线程对其进行操作。因此 在高并发应用中,她的性能表现要远远低于LinkedBlockingQueue,更要低于 ConcurrentLinkedQueue.

分享到:
评论

相关推荐

    Java 9 Data Structures and Algorithms

    - **双端队列**:双端队列允许两端都进行插入和删除操作,适用于需要快速访问两端元素的应用场景。 #### 函数式编程 - **递归算法**:递归是一种强大的算法设计技术,允许函数调用自身来解决问题。递归算法通常...

    CoreJava面试技巧1.19.pdf

    ### 数据运算 #### 基本数据类型与赋值规则 - **基本数据类型**:在Java中,基本数据类型主要包括`byte`、`int`、`long`、`...#### Deque(双端队列) - **Deque**: 是`Queue`的子接口,支持两端的插入和删除操作。

    对几种队列的总结

    然后是**双端队列(deque,Double Ended Queue)**,它允许在队列的两端进行入队和出队操作。双端队列常用于栈的功能,如回溯算法,或者在需要快速插入和删除元素的地方,如缓存机制。 再来说说**阻塞队列**,它在...

    利用值栈求表达式 java

    为了简化实现,可以使用Java的内置类如`Stack`或者`Deque`(双端队列)来构建值栈。同时,运算符的优先级可以通过定义一个映射表来存储,这样可以更方便地进行比较。 在实际项目中,这样的功能可能需要封装成一个...

    数据结构与算法思维导图1

    - **双端队列(deque)**:允许在两端进行插入和删除操作。 - **集合**:不包含重复元素的数据结构,通常用哈希表实现,提供快速查找。 - **映射/哈希表**:通过键值对存储数据,提供快速查找、插入和删除操作。 ...

    最简洁实用的JAVAEE入门开发手册

    - **高性能**:Java 虚拟机提供了一流的稳定性和高度优化的性能,经过长时间的实际应用验证。 - **广泛的社区支持**:Java 拥有一个庞大的开源社区,提供了丰富的高质量组件和库。 - **学习Java的理由**: - **...

    flopple:收集Java应用程序的其他通用数据结构,过程和实用程序功能

    - 队列(Queue):Java中提供了`java.util.Queue`接口,但flopple可能提供了更高效或特化的实现,如优先队列(PriorityQueue)、双端队列(Deque)等。 - 集合(Set):除了标准的HashSet和TreeSet,可能还包括...

    Java ArrayDeque实现Stack的功能

    总结来说,`Java ArrayDeque` 是一个高效的双端队列实现,它可以方便地用来实现栈的功能,提供了比 `Stack` 类更高的性能,因为它的操作不需要同步。在单线程环境中,`ArrayDeque` 是一个很好的选择,但在多线程环境...

    Programmers-Algorithm:程序员算法

    - **高级数据结构**:堆、平衡二叉树(AVL、红黑树)、图、哈希表、堆栈和队列的变体(如双端队列)等。 - **动态规划**:解决最优化问题,如斐波那契数列、背包问题、最长公共子序列等。 3. **递归与分治策略** ...

    算法专家

    Java是一种广泛应用的面向对象的编程语言,特别适合于构建大规模、高性能的应用程序。 Java算法专家需要掌握的基础知识点包括但不限于以下几个方面: 1. **基础数据结构**:数组、链表、栈、队列、哈希表、树...

    Visual C++ 2010入门经典(第5版)--源代码及课后练习答案

     Ivor Horton是撰著Java、C和C++编程语言图书的杰出作家之一。大家一致认为,他的著作独具风格,无论是编程新手,还是经验丰富的编程人员,都很容易理解其内容。在个人实践中,Ivor Horton也是一名系统顾问。他从事...

Global site tag (gtag.js) - Google Analytics