diff --git a/notes/Java 容器.md b/notes/Java 容器.md index d221d974..0d36191e 100644 --- a/notes/Java 容器.md +++ b/notes/Java 容器.md @@ -9,9 +9,9 @@ * [适配器模式](#适配器模式) * [三、源码分析](#三源码分析) * [ArrayList](#arraylist) + * [LinkedList](#linkedlist) * [Vector](#vector) * [CopyOnWriteArrayList](#copyonwritearraylist) - * [LinkedList](#linkedlist) * [HashMap](#hashmap) * [ConcurrentHashMap](#concurrenthashmap) * [LinkedHashMap](#linkedhashmap) @@ -200,74 +200,13 @@ public E remove(int index) { #### 4. 序列化 -ArrayList 基于数组实现,并且具有动态扩容特性,因此保存元素的数组不一定都会被使用,那么就没必要全部进行序列化。 - -保存元素的数组 elementData 使用 transient 修饰,该关键字声明数组默认不会被序列化。 - -```java -transient Object[] elementData; // non-private to simplify nested class access -``` - -ArrayList 实现了 writeObject() 和 readObject() 来控制只序列化数组中有元素填充那部分内容。 - -```java -private void readObject(java.io.ObjectInputStream s) - throws java.io.IOException, ClassNotFoundException { - elementData = EMPTY_ELEMENTDATA; - - // Read in size, and any hidden stuff - s.defaultReadObject(); - - // Read in capacity - s.readInt(); // ignored - - if (size > 0) { - // be like clone(), allocate array based upon size not capacity - ensureCapacityInternal(size); - - Object[] a = elementData; - // Read in all elements in the proper order. - for (int i=0; i