2016-02-19 86 views
-1

如何隨機訪問標記接口

隨機訪問標記接口

的實現是ArrayList中進行檢索操作更快? 標記接口請求JVM以更快地訪問或檢索值。

什麼算法JVM實現更快的訪問?

希望你會明白現在的問題。

+0

沒有任何來自Google搜索的鏈接_「java random access marker interface」_提供所需的信息? –

+1

我認爲他只是對標記界面的目的感到困惑。 – Thihara

+0

@Thihara「在數組列表中快速執行... [make]檢索操作」。聽起來他想知道爲什麼它讓事情變得更快。 –

回答

1

它沒有。

它告訴我們,實施支持快速隨機訪問。

這就是標記接口的目的。它標記的一個實現。

引述文檔使用List實現以表明其支持快速(通常是固定時間)隨機訪問

標記接口。該接口的主要目的是允許通用算法改變其行爲,以便在應用於隨機或順序訪問列表時提供良好的性能。

+0

我的問題是它在內部正在做什麼來更快地檢索值。 –

1

它標誌着其可隨機訪問的列表中的實施方式。

這樣一個呼叫者可以隨機訪問數據,如果這是有效的,或者如果它是不使用的另一種手段。

例如在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)

+0

我的問題是「JVM實現哪種算法以實現更快的訪問?」 –

+0

@HimanshuAwasthi標記爲「RandomAccess」的get(int)需要爲'O(1)' –

+0

@HimanshuAwasthi你可能會想象它更加重要。對於'ArrayList',它通過索引查找一個數組,而不僅僅是這個。看到我更新的答案。 –