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 的节点。
使用 LinkedList 的操作比 ArrayList 快,因为它使用双向链表,因此不需要在内存中进行位移。但是在 ArrayList 的情况下,如果从数组中删除任何元素,所有位都会在内存中移动。
那么,linkedList通过什么内部机制实现数据操作的优势呢?
一个ArrayList
使用数组来存储元素。所以一个数组可能有 4 个这样的元素
[1][2][3][4]
并且删除第三个元素将留下
[1][2][empty][4]
这意味着程序员必须手动移动元素才能得到
[1][2][4]
但是链表使用指针,所以在上面的例子中,第二个节点(值为 2 的节点)可以将其指针更新为指向存储 4 的节点。