Java 中 LinkedList 和 arrayList 双向链表的内部工作有什么区别

What is the difference between internal working of doubly linked list of LinkedList and arrayList in Java

使用 LinkedList 的操作比 ArrayList 快,因为它使用双向链表,因此不需要在内存中进行位移。但是在 ArrayList 的情况下,如果从数组中删除任何元素,所有位都会在内存中移动。

那么,linkedList通过什么内部机制实现数据操作的优势呢?

一个ArrayList使用数组来存储元素。所以一个数组可能有 4 个这样的元素

[1][2][3][4]

并且删除第三个元素将留下

[1][2][empty][4]

这意味着程序员必须手动移动元素才能得到

[1][2][4]

但是链表使用指针,所以在上面的例子中,第二个节点(值为 2 的节点)可以将其指针更新为指向存储 4 的节点。