Java中RandomAccess接口的作用
RandomAccess接口的作用
- RandomAccess(随机访问)当作标记,是一种标记接口,表现为一个空接口
判断一个list是否实现了RandomAcess接口,从而选择不同的算法
比如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下的
ArrayList
和LinkedList
ArrayList实现了RandomAccess
- 由于ArrayList可以根据下标快速获取指定元素,故随机访问速度比较快,而for循环根据下标获取指定元素,采用的即是随机访问的方法
- 故ArrayList采用简单的for循环进行访问速度比较快
LinkedList没有实现RandomAccess
- 由于LinkedList是通过指针顺序查找元素,故按顺序访问速度比较快,而iterator中的next()方法采用的是顺序访问的方法
- 故LinkedList采用iterator循环访问速度比较快
还没有评论,来说两句吧...