ArrayList和LinkedList的底层数据结构
ArrayList的底层数据结构
1.ArrayList的底层数据结构是一维数组,通过底层Object数组复制的方式(Arrays.copyOf()方法)来处理数组的增长;
2.ArrayList实现java.io.Serializable的方式。当写入到输出流时,先写入“容量”,再依次写入“每一个元素”;当读出输入流时,先读取“容量”,再依次读取“每一个元素”。
LinkedList的底层数据结构
1.LinkedList实际上是通过双向链表去实现的,它包含一个非常重要的内部类:Entry。Entry是想、双向链表节点对应的数据结构,它包含的属性有:当前节点所包含的值,上一个节点,下一个节点。
2.从LinkedList的实现方式中可以发现,它不存在LinkedList容量不足的问题。
3.LinkedList的克隆函数,即是将全部元素克隆到一个新的LinkedList对象中。
4.LinkedList实现java.io.Serializable。当写入到输出流时,先写入“容量”,再依次写入“每一个节点保护的值”;当读出输入流时,先读取“容量”,再依次读取“每一个元素”。
5.由于LinkedList实现了Deque,而Deque接口定义了在双端队列两端访问元素的方法。提供插入、移除和检查元素的方法。每种方法都存在两种形式:一种形式在操作失败时抛出异常,另一种形式返回一个特殊值(null 或 false,具体取决于操作)。

6.LinkedList可以作为FIFO(先进先出)的队列,作为FIFO的队列时,下表的方法等价:

7.LinkedList可以作为LIFO(后进先出)的栈,作为LIFO的栈时,下表的方法等价:


浙公网安备 33010602011771号