我是靠谱客的博主 耍酷诺言,这篇文章主要介绍LinkedList详解前言一、使用二、创建机制详解,现在分享给大家,希望可以做个参考。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、使用
  • 二、创建机制详解


前言

LinkedList 实现了 List 继承了Collection
class LinkedList extends AbstractSequentialList
implements List, Deque, Cloneable, java.io.Serializable
单列集合:
可添加重复元素,例如: 多个null
底层实现了双向链表合双端队列的特点
线程不安全,没有实现同步

提示:以下是本篇文章正文内容,下面案例可供参考

一、使用

  • 创建
复制代码
1
2
3
4
5
6
7
// 创建 LinkedList<Object> objects = new LinkedList<>(); objects.add("1"); objects.add(2); objects.add(3); System.out.println(objects.toString());// 调用了AbstractCollection<E> 的toString方法
复制代码
1
2
objects.add(); //添加元素,返回boolean
  • 删除
复制代码
1
2
3
4
5
6
7
8
9
System.out.println(objects); //[1, 2, 3, 3, null, null, null] objects.remove(); // 删除第一个元素 objects.remove(1); //删除该列表中指定位置的元素。 objects.remove("1"); // 列表中删除指定元素的第一个出现(如果存在)。 objects.removeFirst() ; // 删除头节点 objects.removeLast() ; // 删除尾节点 System.out.println(objects); //[3, null, null]
复制代码
1
2
3
4
5
6
objects.add("1"); //[1] System.out.println(objects); objects.set(0,"2"); //通过下标,更改元素 System.out.println(objects); //[2]
复制代码
1
2
objects.indexOf(Object) //元素存在返回下标,不存在返回-1

二、创建机制详解

复制代码
1
2
LinkedList<Object> objects = new LinkedList<>();

构造器初始化

复制代码
1
2
3
4
5
6
protected transient int modCount = 0; 记录修改次数 transient int size = 0; 初始化大小为0 public LinkedList() { } 初始化完成

linkedList 底层
底层运维这一个头结点和尾节点
用一个Node 内部类做存储

复制代码
1
2
3
4
transient Node<E> first; transient Node<E> last;

Node 类

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
private static class Node<E> { E item; // 当前元素 Node<E> next; // 指向下一个元素 Node<E> prev; //指向上一个元素 Node(Node<E> prev, E element, Node<E> next) { this.item = element; this.next = next; this.prev = prev; } }

add()添加分析

复制代码
1
2
3
4
5
public boolean add(E e) { linkLast(e); // 底层用linkLast添加 return true; }

linkLast(e);

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void linkLast(E e) { final Node<E> l = last; // 标记尾元素 final Node<E> newNode = new Node<>(l, e, null); //l = prev , 当前元素的prev = l last = newNode; // 更新尾元素 if (l == null) // null,第一次添加 first = newNode; else l.next = newNode; // 用尾元素的next 指向 传入元素 size++; modCount++; } // 返回添加完成

最后

以上就是耍酷诺言最近收集整理的关于LinkedList详解前言一、使用二、创建机制详解的全部内容,更多相关LinkedList详解前言一、使用二、创建机制详解内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部