モジュール java.base
パッケージ java.util

インタフェースRandomAccess

既知のすべての実装クラス:
ArrayList, AttributeList, CopyOnWriteArrayList, RoleList, RoleUnresolvedList, Stack, Vector

public interface RandomAccess
List実装で使用されるマーカー・インタフェースで、高速(一般的に一定時間)ランダム・アクセスをサポートしていることを示します。 このインタフェースの主な目的は、ジェネリック・アルゴリズムが、ランダム・アクセス・リストまたはシーケンシャル・アクセス・リストのどちらかに適用された時に、動作を変更して、優れたパフォーマンスを実現することです。

ランダム・アクセス・リスト(ArrayList)を操作する最適なアルゴリズムは、順次アクセス・リスト(LinkedListなど)に適用すると、2次的な動作を生成できます。 汎用リスト・アルゴリズムでは、順次アクセス・リストに適用された場合にパフォーマンスが低下するアルゴリズムを適用する前に、指定されたリストがこのインタフェースをinstanceofにするかどうかを確認し、許容可能なパフォーマンスを保証するために必要に応じて動作を変更することをお薦めします。

ランダム・アクセスとシーケンシャル・アクセスとの区別が多くの場合曖昧であることが認められています。 たとえば、一部のList実装では、膨大なアクセス時間はあるが実際には一定のアクセス時間はある場合、漸近的に線形アクセス時間が提供されます。 このようなList実装では、通常、このインタフェースを実装する必要があります。 経験則として、List実装では、クラスの一般的なインスタンスに対して次のループが発生した場合にこのインタフェースを実装する必要があります:

     for (int i=0, n=list.size(); i < n; i++)
         list.get(i);
 
次のようなループより迅速に実行されます。
     for (Iterator i=list.iterator(); i.hasNext(); )
         i.next();
 

このインタフェースは、Java Collections Frameworkのメンバーです。

導入されたバージョン:
1.4