赞
踩
LinkedList类是双向列表(底层使用链表结构),列表中的每个节点都包含了对前一个和后一个元素的引用。
- LinkedList是双向链表实现的List
- LinkedList是非线程安全的
- LinkedList元素允许为null,允许重复元素
- LinkedList是基于链表实现的,因此插入删除效率高,查找效率低(虽然有一个加速动作)LinkedList是基于链表实现的,因此不存在容量不足的问题,所以没有扩容的方法
- LinkedList还实现了栈和队列的操作方法,因此也可以作为栈、队列和双端队列来使用
offer方法:内部调用offerLast插入元素,返回插入结果true/false
add方法: 内部调用addLast实现
poll方法: 内部调用pollFirst实现
remove方法:内部调用removeFirst实现
peek方法:内部调用peekFirst实现
element方法:内部调用getFirst实现栈方法:
pop方法: 内部调用removeFirst实现
push方法:内部调用addFirst实现
ArrayDeque是双端队列的线性实现 (底层使用数组结构)
- 无容量大小限制,容量按需增长;
- 非线程安全队列,无同步策略,不支持多线程安全访问;
- 当用作栈时,性能优于
Stack
,当用于队列时,性能优于LinkedList
- 两端都可以操作
- 具有fail-fast特征
- 不能存储
null
- 支持双向迭代器遍历
队列方法:
offer方法:内部调用offerLast插入元素,返回插入结果true/false
add方法: 内部调用addLast实现
poll方法: 内部调用pollFirst实现
remove方法:内部调用removeFirst实现
peek方法:内部调用peekFirst实现
element方法:内部调用getFirst实现栈方法:
pop方法: 内部调用removeFirst实现
push方法:内部调用addFirst实现
Java提供了PriorityBlockingQueue(实现BlockingQueue接口)用于Java多线程环境。
- // 默认实现了一个最小堆。
- Queue<Integer> priorityQueue = new PriorityQueue<>();
- // 实现最大堆
- Queue<ListNode> priorityQueue = new PriorityQueue<ListNode>(
- lists.size(),
- new Comparator<ListNode>(){
- @Override
- public int compare(ListNode o1, ListNode o2) { return o2.val-o1.val; }
- }
- );
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。