Spec-Zone.ru › OpenJDK 21

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

С:
1.4

© 1993, 2023, 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/21/docs/api/java.base/java/util/RandomAccess.html

Spec-Zone.ru

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