Java LinkedList源码深入分析
1.LinkedList是基于链表的,而且是一个双向链表,不需要连续内存空间。
2.对于add操作,有两种情况,
1)如果不指定位置,则在末尾添加。只需改变指针指向即可。
2)如果在指定位置添加,则需要遍历链表。如果索引小于链表长度的一半,从头遍历,否则从尾部遍历。调用node(index)进行遍历。
3.对于get和set方法都需要遍历链表,相比ArrayList,效率要低。
4.对于remove,则需要遍历整个链表
unlink 断开链表中被删节点前后的指向,建立新的指向。
5.ArrayList分析
ArrayList源码分析
6.总结:
1)对于get和set,Arraylist效率高,直接通过索引取值,而LinkedList,则需要遍历链表。
2)对于Add方法,
如果添加到末尾,差不多。
如果插入在中间,ArrayList需要移动素组,而LinkedList只需操作指针即可,效率要高。但是LinkedList,需要通过索引查找到要插入的位置。
3)对于remove方法。
如果删除在尾部,差不多。
如果删除中间某个元素,ArrayList则需要移动数组。而Linkedlist如果删除的是对象只需要操作指针即可,如果是按索引删除,则需要遍历,找到该元素。
到此这篇关于Java LinkedList源码深入分析的文章就介绍到这了,更多相关Java LinkedList内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!