概述
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、使用
- 二、创建机制详解
前言
LinkedList 实现了 List 继承了Collection
class LinkedList extends AbstractSequentialList
implements List, Deque, Cloneable, java.io.Serializable
单列集合:
可添加重复元素,例如: 多个null
底层实现了双向链表合双端队列的特点
线程不安全,没有实现同步
提示:以下是本篇文章正文内容,下面案例可供参考
一、使用
- 创建
// 创建
LinkedList<Object> objects = new LinkedList<>();
objects.add("1");
objects.add(2);
objects.add(3);
System.out.println(objects.toString());// 调用了AbstractCollection<E> 的toString方法
- 增
objects.add(); //添加元素,返回boolean
- 删除
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]
- 改
objects.add("1"); //[1]
System.out.println(objects);
objects.set(0,"2"); //通过下标,更改元素
System.out.println(objects); //[2]
- 查
objects.indexOf(Object) //元素存在返回下标,不存在返回-1
二、创建机制详解
LinkedList<Object> objects = new LinkedList<>();
构造器初始化
protected transient int modCount = 0; 记录修改次数
transient int size = 0; 初始化大小为0
public LinkedList() {
}
初始化完成
linkedList 底层
底层运维这一个头结点和尾节点
用一个Node 内部类做存储
transient Node<E> first;
transient Node<E> last;
Node 类
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()添加分析
public boolean add(E e) {
linkLast(e); // 底层用linkLast添加
return true;
}
linkLast(e);
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详解前言一、使用二、创建机制详解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复