我们在学习这一块内容时需要注意的一个问题是 集合中存放的依然是对象的引用而不是对象本身。
List接口扩展了Collection并声明存储一系列元素的类集的特性。使用一个基于零的下标,元素可以通过它们在列表中的位置被插入和访问。一个列表可以包含重复元素。List在集合中是一个比较重要的知识点也是在开发中最常用的。
LinkedList 的底层实现是用双链表实现的
当执行插入或者删除操作时用LinkedList比较好,这和底层实现有关,因为他是用双链表实现的当执行插入或是删除或是增加操作时链表其余的对象并没有发生位置上的改变,因为改变的只是与之相关的引用,链表里的对象在内存上的位置也可能根本就没有挨着。
LinkedList的工作原理
linkedlist里存放的并不是对象本身而是对象的引用在源代码中有Entry这个内部类,这个Entry内部类里有前趋 后记等属性,存放的对象的引用就是作为Entry对象的属性存放在Entry对象里。(JDK1.6中是这样)在JDK1.8中还是用的这样的方式,也是用一个内部类作为链表中的一个个容器,但是不再叫Entry了,而是叫Node。
1 private static class Node<E> { 2 E item; 3 Node<E> next; 4 Node<E> prev; 5 6 Node(Node<E> prev, E element, Node<E> next) { 7 this.item = element; 8 this.next = next; 9 this.prev = prev; 10 } 11 }