参考:https://blog.****.net/huangfan322/article/details/52756441
1、LinkedList实现了Deque和Queue接口,可以按照队列、栈和双端队列的方式进行操作
2、LinkedList就是数据结构中的链表,这种数据结构有这样的特性:
(1)分配内存空间不是必须连续的
(2)插入、删除操作很快,只要修改前后指针就OK了,时间复杂度为O(1)
(3)访问比较慢,必须得从第一个元素开始遍历,时间复杂度为O(n)
3、利用LinkedList实现队列Queue操作:(队列的操作就是先进先出,尾部加数据,头部删数据)
(1)在尾部添加元素,add(),offer();但是,add()会在长度不够时抛出异常:IllegalStateException; offer()则不会,只返回false
(2) 查看头部元素,element(),peek();element()会在没元素时抛出异常:NoSuchElementException; peek()返回null;
(3)删除头部元素,remove(),poll(),返回头部元素,并且从队列中删除;remove()会在没元素时抛出异常:NoSuchElementException; poll()返回null;
4、实现双端队列Deque
5、利用LinkedList实现栈Stack,主要有三个方法:peek()\push()\pop()
(1)push表示入栈,在头部添加元素,栈的空间可能是有限的,如果栈满了,push会抛出异常IllegalStateException。
(2)pop表示出栈,返回头部元素,并且从栈中删除,如果栈为空,会抛出异常NoSuchElementException。
(3)peek查看栈头部元素,不修改栈,如果栈为空,返回null。
6、总结:
如果是实现的队列,则添加元素需要用add()或者offer()
如果是实现的栈,则添加元素用push()