深入理解容器系列之三--------LinkedList、Stack、Queue、PriorityQueue的总结
来源:互联网 发布:操作系统概念-java实现 编辑:程序博客网 时间:2024/05/18 02:40
1、这几种容器的特点
- 都是按照顺序来存储元素。
- 取元素的时候的不同点:
- LinkedList:按照下标随意取元素
- Stack:后进先出取元素
- Queue:先进先出取元素
- PriorityQueue:按照优先级来取元素
总结:以上四种都是按照顺序来存储元素的,但是就是取元素的时候顺序不一样,这样就把大部分情况都涵盖在里面了,彰显出容器设计的全面性和考虑得很周到。
2、标题解惑
为什么要把这四种容器放在一起呢?理由很简单:Stack、Queue、PriorityQueue这三种容器都可以用LinkedList来实现,当然实际上并不是这样的。但是我们可以用这种方式来归纳和总结。下面是jdk文档的几个表,详情请点击这里
First Element (Head)Last Element (Tail) Throws exceptionSpecial valueThrows exceptionSpecial valueInsertaddFirst(e)
offerFirst(e)
addLast(e)
offerLast(e)
RemoveremoveFirst()
pollFirst()
removeLast()
pollLast()
ExaminegetFirst()
peekFirst()
getLast()
peekLast()
Deque不同返回值的表Queue MethodEquivalent Deque Method
add(e)
addLast(e)
offer(e)
offerLast(e)
remove()
removeFirst()
poll()
pollFirst()
element()
getFirst()
peek()
peekFirst()
Queue interface和Deque methods的一些等价的方法Stack MethodEquivalent Deque Method
push(e)
addFirst(e)
pop()
removeFirst()
peek()
peekFirst()
Stack 和Deque methods的一些等价的方法从上面的表中我们可以看出,我们可以用Deque的方法来实现Queue和 Stack的功能,而刚刚好的是LinkedList实现了Deque这个接口,
因此LinkedList拥有所有这些方法的实现,LinkedList可以实现Stack、Queue、PriorityQueue。
3、功能
- LinkedList的主要功能
1、拥有所有ArrayList的功能
2、相比ArrayList,就是扩展了对表头和表尾的操作,由第一个表可知。
- Stack、Queue、PriorityQueue的功能
这三种容器并不强调对对象的增、删、改、查、遍历等操作,他们强调是的对象进入容器和对象从容器出来时的一种先后关系。
在这里我们就得出了一个结论:如果你的程序强调对元素的增、删、改、查、遍历等操作就用LinkedList或者ArrayList;
如果是强调对象进入容器和对象从容器出来时的先后关系,那就用Stack、Queue、PriorityQueue。下面分别归纳这三种容器的功能。
1、Stack(后进先出)
增加
- push(E item)
删除
- pop()
查
- search(Object o)
- peek()
状态
- empty()
增加
- add(E e)
- offer(E e)
删除
- poll()
查
- element()
- peek()
状态
- empty()
3、PriorityQueue(按优先级从队列中弹出)
- 主要是Comparator这个接口的实现,这个在后面跟equal统一总结
优点
- 插入元素效率高
- 删除元素效率高
缺点
- 按下标查找元素效率低
注意:Stack、Queue、PriorityQueue不做性能比较,因为他们的主要点是对象进入容器和对象从容器出来时的先后关系,即使做性能比较也是看他们用什么来实现,比如说用链表还是用数组,这里不做讨论
原文http://blog.csdn.net/xie389124248/article/details/18303463?utm_source=tuicool&utm_medium=referral
- 深入理解容器系列之三--------LinkedList、Stack、Queue、PriorityQueue的总结
- 深入理解容器系列片之三--------LinkedList、Stack、Queue、PriorityQueue的总结
- ArrayList,LinkedList,Stack,Queue,PriorityQueue 基本概念
- 深入理解容器系列之二--------ArrayList的总结
- Java Queue系列之PriorityQueue
- STL容器总结之stack和queue
- STL容器总结之stack和queue
- 给jdk写注释系列之jdk1.6容器(12):PriorityQueue源码解析PriorityQueue是一种什么样的容器呢?看过前面的几个jdk容器分析的话,看到Queue这个单词你一定会,哦~这
- 带你深入理解STL之Stack和Queue
- java collections 集合基础学习 ArrayList,LinkedList, HashSet, TreeSet, HashMap, Stack,Queue,PriorityQueue
- 深入Java集合系列之五:PriorityQueue
- 深入Java集合系列之五:PriorityQueue
- 深入理解容器系列片之二--------ArrayList的总结
- LinkedList的深入理解
- STL之stack&queue容器(笔记)
- STL之容器适配器:stack,queue , priority_queue
- STL之queue和stack容器
- STL之queue和stack容器
- 利用本章末尾描述的算法(散列表加速)实现字谜程序
- s5pv210 datasheet_system_BUS
- 新浪,腾讯原生态SDK分享
- HDU 5680 - zxa and set
- VirtualBox 问题汇总
- 深入理解容器系列之三--------LinkedList、Stack、Queue、PriorityQueue的总结
- 隐函数存在定理1及求导公式_20160505
- [安卓开发] 快递物流信息布局
- Hive ORC和Parquet
- Gallery事例
- IntelliJ IDEA 14 注册码
- Java入门习题(四)——接口、继承和多态
- Java:网上超市购物结算功能模拟
- hadoop2.x常用端口、定义方法及默认端口、hadoop1.X端口对比