LinkedList、Stack、Queue、PriorityQueue的总结
2017-12-16 09:32
543 查看
1、这几种容器的特点
都是按照顺序来存储元素。取元素的时候的不同点:
LinkedList:按照下标随意取元素
Stack:后进先出取元素
Queue:先进先出取元素
PriorityQueue:按照优先级来取元素
总结:以上四种都是按照顺序来存储元素的,但是就是取元素的时候顺序不一样,这样就把大部分情况都涵盖在里面了,彰显出容器设计的全面性和考虑得很周到
2、标题解惑
为什么要把这四种容器放在一起呢?理由很简单:Stack、Queue、PriorityQueue这三种容器都可以用LinkedList来实现,当然实际上并不是这样的。但是我们可以用这种方式来归纳和总结。下面是jdk文档的几个表,详情请点击这里First Element (Head) | Last Element (Tail) | |||
Throws exception | Special value | Throws exception | Special value | |
Insert | addFirst(e) | offerFirst(e) | addLast(e) | offerLast(e) |
Remove | removeFirst() | pollFirst() | removeLast() | pollLast() |
Examine | getFirst() | peekFirst() | getLast() | peekLast() |
Queue Method | Equivalent Deque Method |
add(e) | addLast(e) |
offer(e) | offerLast(e) |
remove() | removeFirst() |
poll() | pollFirst() |
element() | getFirst() |
peek() | peekFirst() |
Stack Method | Equivalent Deque Method |
push(e) | addFirst(e) |
pop() | removeFirst() |
peek() | peekFirst() |
从上面的表中我们可以看出,我们可以用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()
2、Queue(先进先出),在这里它只是一个接口,一般由LinkedList来实例化它
增加
add(E e)
offer(E e)
删除
poll()
查
element()
peek()
状态
empty()
3、PriorityQueue(按优先级从队列中弹出)
主要是Comparator这个接口的实现,这个在后面跟equal统一总结
4、LinkedList的优劣点(与ArrayList相比)
优点
插入元素效率高
删除元素效率高
缺点
按下标查找元素效率低
注意:Stack、Queue、PriorityQueue不做性能比较,因为他们的主要点是对象进入容器和对象从容器出来时的先后关系,即使做性能比较也是看他们用什么来实现,比如说用链表还是用数组,这里不做讨论
相关文章推荐
- 深入理解容器系列之三--------LinkedList、Stack、Queue、PriorityQueue的总结
- 深入理解容器系列片之三--------LinkedList、Stack、Queue、PriorityQueue的总结
- java collections 集合基础学习 ArrayList,LinkedList, HashSet, TreeSet, HashMap, Stack,Queue,PriorityQueue
- ArrayList,LinkedList,Stack,Queue,PriorityQueue 基本概念
- leetcode最优解整理2(Linked list/ Stack/Queue/Array/HashTable/ Tree/bfs/union find)
- 【C#复习总结】探究各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字
- C# 集合类总结 :(Array、 Arraylist、List、Hashtable、Dictionary、Stack、Queue)
- 总结C# 集合类 Array Arraylist List Hashtable Dictionary Stack Queue
- 【CLRS】《算法导论》读书笔记(四):栈(Stack)、队列(Queue)和链表(Linked List)
- Use linked list to create queue stack BST in C
- c#自定义LinkedList Queue Stack
- 总结C# 集合类 Array Arraylist List Hashtable Dictionary Stack Queue
- STL学习——STL中的序列式容器及适配器总结(vector、list、deque、stack、queue)
- JavaSE第四十三讲:使用LinkedList实现Stack与Queue
- java集合框架:浅谈如何使用LInkedList实现队列(Queue)和堆栈(Stack)
- C# 集合类总结(Array,Arraylist,List,Hashtable,Dictionary,Stack,Queue)
- 总结C# 集合类 Array Arraylist List Hashtable Dictionary Stack Queue
- Java集合框架(四)—— Queue、LinkedList、PriorityQueue
- 【CLRS】《算法导论》读书笔记(四):栈(Stack)、队列(Queue)和链表(Linked List)
- 使用LinkedList实现Stack与Queue