モジュール 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