深入理解容器系列片之三--------LinkedList、Stack、Queue、PriorityQueue的总结
来源:互联网 发布:gps端口检测工具下载 编辑:程序博客网 时间:2024/05/24 02:38
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不做性能比较,因为他们的主要点是对象进入容器和对象从容器出来时的先后关系,即使做性能比较也是看他们用什么来实现,比如说用链表还是用数组,这里不做讨论
- 深入理解容器系列片之三--------LinkedList、Stack、Queue、PriorityQueue的总结
- 深入理解容器系列之三--------LinkedList、Stack、Queue、PriorityQueue的总结
- 深入理解容器系列片之二--------ArrayList的总结
- 深入理解容器系列片之四--------HashMap原理
- 深入理解容器系列片之五--------hashcode和equal
- ArrayList,LinkedList,Stack,Queue,PriorityQueue 基本概念
- 容器的归纳和总结系列片之一
- STL容器总结之stack和queue
- STL容器总结之stack和queue
- 带你深入理解STL之Stack和Queue
- java collections 集合基础学习 ArrayList,LinkedList, HashSet, TreeSet, HashMap, Stack,Queue,PriorityQueue
- 深入理解容器系列之二--------ArrayList的总结
- LinkedList的深入理解
- STL之stack&queue容器(笔记)
- STL之容器适配器:stack,queue , priority_queue
- STL之queue和stack容器
- STL之queue和stack容器
- STL容器之stack和queue
- ubuntu连接isci target
- find -iname "*" | xargs grep network_error 2>/dev/null命令中2>/dev/null的含义
- 2121 数据结构实验之链表六:有序链表的建立 【纯插排】
- 移动端图像到文字的转化识别技术
- 基于MapReduce的HBase开发
- 深入理解容器系列片之三--------LinkedList、Stack、Queue、PriorityQueue的总结
- win7删除oracle 10.2记录
- 利用Struts2+Spring3+Hibernate4+ExtJS4.2开发企业富客户端商业应用
- iOS- AVSpeechSynthesizer——iOS7语音合成器
- Wpf 自定义绑定Command和手动更新Command状态
- msyql kye
- 黑马程序员——枚举类型介绍及其使用方法
- MAKEWORD与MAKELONG
- git汇总