diff --git "a/Part2/JavaSE/ArrayList\346\272\220\347\240\201\345\211\226\346\236\220.md" "b/Part2/JavaSE/ArrayList\346\272\220\347\240\201\345\211\226\346\236\220.md" index 3689eab..87ee91d 100644 --- "a/Part2/JavaSE/ArrayList\346\272\220\347\240\201\345\211\226\346\236\220.md" +++ "b/Part2/JavaSE/ArrayList\346\272\220\347\240\201\345\211\226\346\236\220.md" @@ -10,7 +10,7 @@ ArrayList源码剖析 ArrayList的源码如下(加入了比较详细的注释): -``` +```java package java.util; public class ArrayList extends AbstractList @@ -390,7 +390,7 @@ public class ArrayList extends AbstractList 首先来看Arrays.copyof()方法。它有很多个重载的方法,但实现思路都是一样的,我们来看泛型版本的源码: -``` +```java public static T[] copyOf(T[] original, int newLength) { return (T[]) copyOf(original, newLength, original.getClass()); } @@ -398,7 +398,7 @@ public static T[] copyOf(T[] original, int newLength) { 很明显调用了另一个copyof方法,该方法有三个参数,最后一个参数指明要转换的数据的类型,其源码如下: -``` +```java public static T[] copyOf(U[] original, int newLength, Class newType) { T[] copy = ((Object)newType == (Object)Object[].class) ? (T[]) new Object[newLength] @@ -418,7 +418,7 @@ public static T[] copyOf(U[] original, int newLength, Class 第二个, T[] toArray(T[] a)方法。该方法可以直接将ArrayList转换得到的Array进行整体向下转型(转型其实是在该方法的源码中实现的),且从该方法的源码中可以看出,参数a的大小不足时,内部会调用Arrays.copyOf方法,该方法内部创建一个新的数组返回,因此对该方法的常用形式如下: -``` +```java public static Integer[] vectorToArray2(ArrayList v) { Integer[] newText = (Integer[])v.toArray(new Integer[0]); return newText; @@ -428,4 +428,4 @@ public static Integer[] vectorToArray2(ArrayList v) { 5.ArrayList基于数组实现,可以通过下标索引直接查找到指定位置的元素,因此查找效率高,但每次插入或删除元素,就要大量地移动元素,插入删除元素的效率低。 -6.在查找给定元素索引值等的方法中,源码都将该元素的值分为null和不为null两种情况处理,ArrayList中允许元素为null。 \ No newline at end of file +6.在查找给定元素索引值等的方法中,源码都将该元素的值分为null和不为null两种情况处理,ArrayList中允许元素为null。