Java(LinkedList和ArrayList底层分析)

LinkedList全面说明:
LinkedList底层操作机制:
LinkedList的方法:

add():增加节点对象

remove():删除一个节点对象(默认删除第一个节点对象)

set():修改一个节点对象

get():得到一个节点对象

LinkedList的遍历:

增强for循环

迭代器

普通for循化

LinkedList的源码解读:

增加源码:

  1. LinkedList linkedList = new LinkedList();

public LinkedList() {}

  1. 这时 linkeList 的属性 first = null last = null

  2. 执行 添加

public boolean add(E e) {

linkLast(e);

return true;

}

4.将新的结点,加入到双向链表的最后

void linkLast(E e) {

final Node<E> l = last;

final Node<E> newNode = new Node<>(l, e, null);

last = newNode;

if (l == null)

first = newNode;

else

l.next = newNode;

size++;

modCount++;

}

删除源码:

  1. 执行 removeFirst

public E remove() {

return removeFirst();

}

  1. 执行

public E removeFirst() {

final Node<E> f = first;

if (f == null)

throw new NoSuchElementException();

return unlinkFirst(f);

}

  1. 执行 unlinkFirst, 将 f 指向的双向链表的第一个结点拿掉

private E unlinkFirst(Node<E> f) {

final E element = f.item;

final Node<E> next = f.next;

f.item = null;

f.next = null; // help GC

first = next;

if (next == null)

last = null;

else

next.prev = null;

size--;

modCount++;

return element;

}

ArrayList 和 LinkedList 比较:
相关推荐
7哥♡ۣۖᝰꫛꫀꪝۣℋ几秒前
Spring-cloud\Eureka
java·spring·微服务·eureka
亓才孓2 分钟前
[Properties]写配置文件前,必须初始化Properties(引用变量没执行有效对象,调用方法会报空指针错误)
开发语言·python
傻乐u兔6 分钟前
C语言进阶————指针3
c语言·开发语言
老毛肚13 分钟前
手写mybatis
java·数据库·mybatis
两点王爷16 分钟前
Java基础面试题——【Java语言特性】
java·开发语言
choke23320 分钟前
[特殊字符] Python 文件与路径操作
java·前端·javascript
Swift社区23 分钟前
Gunicorn 与 Uvicorn 部署 Python 后端详解
开发语言·python·gunicorn
choke23325 分钟前
Python 基础语法精讲:数据类型、运算符与输入输出
java·linux·服务器
码农阿豪36 分钟前
Python Flask应用中文件处理与异常处理的实践指南
开发语言·python·flask
岁岁种桃花儿36 分钟前
CentOS7 彻底卸载所有JDK/JRE + 重新安装JDK8(实操完整版,解决kafka/jps报错)
java·开发语言·kafka