Spec-Zone.ru › OpenJDK 24

Интерфейс 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

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/RandomAccess.html

Spec-Zone.ru

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