如何实施
随机访问标记界面
是否更快地在 ArrayList 中进行检索操作? 标记接口请求JVM以便更快地访问或检索值。
JVM采用什么算法来加快访问速度?
希望你现在能理解这个问题。
答案 0 :(得分:1)
它没有。
它告诉我们实施支持快速随机访问。
这是标记界面的目的。它标记一个实现。
引用文档
List实现使用的标记接口,表示它们支持快速(通常是恒定时间)随机访问。此接口的主要目的是允许通用算法更改其行为,以便在应用于随机或顺序访问列表时提供良好的性能。
答案 1 :(得分:1)
它标记了可以随机访问的列表实现。
这样,如果有效,调用者可以随机访问数据,如果不是,则可以使用其他方法。
e.g。在AbstractList中,您有一个可以为RandomAccess优化的实现。
public List<E> subList(int fromIndex, int toIndex) {
return (this instanceof RandomAccess ?
new RandomAccessSubList<>(this, fromIndex, toIndex) :
new SubList<>(this, fromIndex, toIndex));
}
JVM采用什么算法来加快访问速度?
重要的方法是get(int)
,需要O(1)
public E get(int index) {
rangeCheck(index);
return elementData(index);
}
呼叫
E elementData(int index) {
return (E) elementData[index];
}
你可以看到它只是查找数组中的索引,所以它是O(1)