Spec-Zone.ru › OpenJDK 25

Интерфейс RandomAccess

Все известные реализующие классы:
ArrayList, AttributeList, CopyOnWriteArrayList, RoleList, RoleUnresolvedList, Stack, Vector
public interface RandomAccess
Маркерный интерфейс, используемый реализациями List для обозначения поддержки быстрого произвольного доступа (обычно за постоянное время). Основное назначение этого интерфейса — позволить универсальным алгоритмам изменять свое поведение, чтобы обеспечивать хорошую производительность при работе как со списками с произвольным доступом, так и со списками с последовательным доступом.

Наилучшие алгоритмы для работы со списками с произвольным доступом (такие как ArrayList) при применении к спискам с последовательным доступом (таким как LinkedList) могут демонстрировать квадратичную зависимость времени выполнения. Универсальным алгоритмам для списков рекомендуется перед применением алгоритма, который будет работать медленно со списком с последовательным доступом, проверять, является ли данный список экземпляром этого интерфейса 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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/RandomAccess.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API