相关博客
- Java集合框架介绍
- Java集合框架 ——— ArrayList 基础使用
- Java集合框架 ——— ArrayList 源码分析
- Java集合框架 ——— HashMap 基础使用
- Java集合框架 ——— HashMap 源码分析(一)
- Java集合框架 ——— HashMap 源码分析(二)
LinkedList 是 List 的子类,List 中的方法 LinkedList 都是可以使用,这里就不做详细介绍。在本文里我们介绍一下 LinkedList 特有的一些方法使用场景。
LinkedList
除了实现了 List
接口相关方法,还实现了 Deque
接口的很多方法,所以我们有很多种新的方式操作列表元素。
插入元素
- addFirst(E e) - 在此列表的开头插入指定的元素。
- addLast(E e) - 将指定的元素追加到此列表的末尾。这个方法相当于
add(E e)
用法,将元素加到队尾 - push(E e) - 在此列表的前面插入元素。这个方法相当于
addFirst(E e)
用法,将元素加到前面 - offer(E e) - 将指定的元素添加为此列表的尾部(最后一个元素)
- offerFirst(E e) - 在此列表的前面插入元素。这个方法相当于
addFirst(E e)
用法,将元素加到前面 - offerLast(E e) - 将指定的元素追加到此列表的末尾。这个方法相当于
addLast(E e)
用法,将元素加到队尾
LinkedList<String> list = new LinkedList<>();
list.push("中间元素");
list.addLast("最后一个元素");
list.addFirst("第一个元素");
// [第一个元素, 中间元素, 最后一个元素]
检索元素
- getFirst() - 返回此列表中的第一个元素。
- getLast() - 返回此列表中的最后一个元素。
- peek() - 检索但不删除此列表的 head(第一个元素)。
- element() - 检索但不删除此列表的 head(第一个元素)
- peekFirst() - 检索但不删除此列表的第一个元素,如果此列表为空,则返回 null 。
- peekLast() - 检索但不删除此列表的最后一个元素,如果此列表为空,则返回 null 。
System.out.println(list.getFirst());
// 第一个元素
System.out.println(list.getLast());
// 最后一个元素
删除元素
- removeFirst() - 从此列表中删除并返回第一个元素。
- removeLast() - 从此列表中删除并返回最后一个元素。
- pop() - 删除并返回此列表的第一个元素,此方法等效于
removeFirst()
。 - poll() - 检索并删除此列表的头部(第一个元素)。
- pollFirst() - 检索并删除此列表的第一个元素,如果此列表为空,则返回 null
- pollLast() - 检索并删除此列表的最后一个元素,如果此列表为空,则返回 null 。
System.out.println(list.removeFirst());
// 第一个元素
System.out.println(list.removeLast());
// 最后一个元素
System.out.println(list.pop());
// 中间元素
总结
采用链表存储,所以在头尾插入或者删除元素不受元素位置的影响,时间复杂度为 O(1);如果是要在指定位置 i 插入和删除元素的话, 时间复杂度为 O(n) ,因为需要先移动到指定位置再插入和删除。
我们在项目中一般是不会使用到 LinkedList 的,需要用到 LinkedList 的场景几乎都可以使用 ArrayList 来代替,并且,性能通常会更好