JDK1.8源码解析——java.util.ArrayList 类
ArrayList定义
ArrayList 是一个用数组实现的集合,支持随机访问,元素有序且可以重复。
继承关系
public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
UML关系图
实现RandomAccess 接口
RandomAccess接口是一个标志接口(Marker),只要List集合实现这个接口,就能支持快速随机访问,来提高访问列表时的性能。
Collections类中的binarySearch()方法,源码如下:
public static <T>
int binarySearch(List<? extends Comparable<? super T>> list, T key) {
if (list instanceof RandomAccess || list.size()<BINARYSEARCH_THRESHOLD)
return Collections.indexedBinarySearch(list, key);
else
return Collections.iteratorBinarySearch(list, key);
}
实现此标记接口,判断list是否实现RandomAccess接口来实行indexedBinarySerach(list,key)或iteratorBinarySerach(list,key)方法。