- likedList简介
- LinkedList是基于双向循环链表(从源码中可以很容易看出)实现的,除了可以当做链表来操作外,它还可以当做栈、队列和双端队列来使用。
- 非线程安全的,只在单线程下适合使用。
- 实现了Serializable接口,因此它支持序列化,能够通过序列化传输
- 实现了Cloneable接口,能被克隆
源码
- add()
- linkLast
- linkFirst
- remove()
node()
Node<E> node(int index) { if(index < (size >> 1)){ Node<E> x = first; for (int i = 0; i < index; i++) x = x.next; return x; }else{ Node<E> x = last; for(int i = size - 1; i > index; i--) x = x.prev; return x; } }
- 类似于二分查找
- add()
小结
- LinkedList没有大小限制
- 没有浪费存储空间(Node节点的创建需要额外消耗少量空间)
- add,remove等操作的空间消耗是固定的,不会造成对元素进行额外的移动拷贝
- 除了对首尾元素外,对其他节点,进行add,remove,set,get等操作,都需要进行遍历查找的,时间复杂度为O(n)
- 适用于查询操作少,存储大量数据,可以考虑使用LinkedList
LinkedList源码详解
猜你喜欢
转载自blog.csdn.net/sinat_32197439/article/details/78068861
今日推荐
周排行