Stay organized with collections
Save and categorize content based on your preferences.
RandomAccess
public
interface
RandomAccess
Known indirect subclasses
ArrayList<E> |
Resizable-array implementation of the List interface.
|
CopyOnWriteArrayList<E> |
A thread-safe variant of ArrayList in which all mutative
operations (add , set , and so on) are implemented by
making a fresh copy of the underlying array.
|
Stack<E> |
The Stack class represents a last-in-first-out
(LIFO) stack of objects.
|
Vector<E> |
The Vector class implements a growable array of
objects.
|
|
Marker interface used by List
implementations to indicate that
they support fast (generally constant time) random access. The primary
purpose of this interface is to allow generic algorithms to alter their
behavior to provide good performance when applied to either random or
sequential access lists.
The best algorithms for manipulating random access lists (such as
ArrayList
) can produce quadratic behavior when applied to
sequential access lists (such as LinkedList
). Generic list
algorithms are encouraged to check whether the given list is an
instanceof
this interface before applying an algorithm that would
provide poor performance if it were applied to a sequential access list,
and to alter their behavior if necessary to guarantee acceptable
performance.
It is recognized that the distinction between random and sequential
access is often fuzzy. For example, some List
implementations
provide asymptotically linear access times if they get huge, but constant
access times in practice. Such a List
implementation
should generally implement this interface. As a rule of thumb, a
List
implementation should implement this interface if,
for typical instances of the class, this loop:
for (int i=0, n=list.size(); i < n; i++)
list.get(i);
runs faster than this loop:
for (Iterator i=list.iterator(); i.hasNext(); )
i.next();
This interface is a member of the
Java Collections Framework.
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-02-10 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-02-10 UTC."],[],[],null,["# RandomAccess\n\nAdded in [API level 1](/guide/topics/manifest/uses-sdk-element#ApiLevels) \nSummary: \n\nRandomAccess\n============\n\n\n`\npublic\n\n\ninterface\nRandomAccess\n`\n\n\n`\n\n\n`\n\n|------------------------|\n| java.util.RandomAccess |\n\n|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Known indirect subclasses [ArrayList](/reference/java/util/ArrayList)\\\u003cE\\\u003e, [CopyOnWriteArrayList](/reference/java/util/concurrent/CopyOnWriteArrayList)\\\u003cE\\\u003e, [Stack](/reference/java/util/Stack)\\\u003cE\\\u003e, [Vector](/reference/java/util/Vector)\\\u003cE\\\u003e |-----------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [ArrayList](/reference/java/util/ArrayList)\\\u003cE\\\u003e | Resizable-array implementation of the `List` interface. | | [CopyOnWriteArrayList](/reference/java/util/concurrent/CopyOnWriteArrayList)\\\u003cE\\\u003e | A thread-safe variant of [ArrayList](/reference/java/util/ArrayList) in which all mutative operations (`add`, `set`, and so on) are implemented by making a fresh copy of the underlying array. | | [Stack](/reference/java/util/Stack)\\\u003cE\\\u003e | The `Stack` class represents a last-in-first-out (LIFO) stack of objects. | | [Vector](/reference/java/util/Vector)\\\u003cE\\\u003e | The `Vector` class implements a growable array of objects. | |\n\n\u003cbr /\u003e\n\n*** ** * ** ***\n\nMarker interface used by `List` implementations to indicate that\nthey support fast (generally constant time) random access. The primary\npurpose of this interface is to allow generic algorithms to alter their\nbehavior to provide good performance when applied to either random or\nsequential access lists.\n\nThe best algorithms for manipulating random access lists (such as\n`ArrayList`) can produce quadratic behavior when applied to\nsequential access lists (such as `LinkedList`). Generic list\nalgorithms are encouraged to check whether the given list is an\n`instanceof` this interface before applying an algorithm that would\nprovide poor performance if it were applied to a sequential access list,\nand to alter their behavior if necessary to guarantee acceptable\nperformance.\n\nIt is recognized that the distinction between random and sequential\naccess is often fuzzy. For example, some `List` implementations\nprovide asymptotically linear access times if they get huge, but constant\naccess times in practice. Such a `List` implementation\nshould generally implement this interface. As a rule of thumb, a\n`List` implementation should implement this interface if,\nfor typical instances of the class, this loop: \n\n```\n for (int i=0, n=list.size(); i \u003c n; i++)\n list.get(i);\n \n```\nruns faster than this loop: \n\n```\n for (Iterator i=list.iterator(); i.hasNext(); )\n i.next();\n \n```\n\nThis interface is a member of the\n[Java Collections Framework](//reference/java/util/package-summary.html#CollectionsFramework)."]]