JAVA 集合之 LinkedList 底层实现和原理
概述
LinkedList底层是基于双向链表(双向链表的特点),链表在内存中不是连续的,而是通过引用来关联所有的元素,所以链表的优点在于添加和删除元素比较快,因为只是移动指针,并且不需要判断是否需要扩容,缺点是查询和遍历效率比较低。
LinkedList是基于双向循环链表实现的,除了可以当做链表来操作外,实现了Deque接口,它还可以当做栈、队列和双端队列来使用。
LinkedList同样是非线程安全的,只在单线程下适合使用。
LinkedList实现了Serializable接口,因此它支持序列化,能够通过序列化传输,实现了Cloneable接口,能被克隆。
数据结构
继承关系
实现接口
基本属性
重要方法解析
添加方法
添加方法默认是添加到LinkedList的尾部,首先将last指定的节点赋值给l节点,然后新建节点newNode ,此节点的前驱指向l节点,data = e , next = null , 并将新节点赋值给last节点,它成为了最后一个节点,根据当前List是否为空做出相应的操作。若不为空将l的后继指针修改为newNodw。 size +1 , modCount+1
删除方法
删除方法,先循环遍历列表,找到item == o 的节点,在调用unlink()方法删除
版权声明: 本文为 InfoQ 作者【彭阿三】的原创文章。
原文链接:【http://xie.infoq.cn/article/7be0b51f3c88715ff8fad28dd】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论