Определение интерфейса randomaccess в документе JDK заключается в следующем: Public Interface Randomaccess
Ниже приведен перевод аннотации JDK
Список реализует интерфейс тега, используемый для обозначения того, что он поддерживает быстрый (обычно фиксированный) случайный доступ. Основная цель этого интерфейса состоит в том, чтобы позволить общим алгоритмам изменить свое поведение, что обеспечивает хорошую производительность при применении к спискам случайного или непрерывного доступа.
При применении наилучшего алгоритма для работы списков случайного доступа (например, ArrayList) к списку непрерывного доступа (например, LinkedList) может быть получено поведение квадратичного члена. Если алгоритм применяется к списку непрерывного доступа, рекомендуется использовать общий алгоритм списка, чтобы проверить, является ли данное список экземпляром этого интерфейса перед применением алгоритма, который может обеспечить плохую производительность, и изменить его поведение, если требуется приемлемая производительность.
Теперь было признано, что разница между случайным и непрерывным доступом часто расплывчат. Например, если список большой, некоторые реализации списка предоставляют инкрементное время линейного доступа, но на самом деле являются фиксированным временем доступа. Такая реализация списка обычно должна реализовать этот интерфейс.
Подчеркните: то, что рекомендуется в JDK, так это реализовать интерфейс Randomaccess для коллекций списков, насколько это возможно
Если класс сбора представляет собой реализацию случайного анализа, попробуйте пройти его с (int i = 0; i <size; i ++) вместо итератора итератора.
И наоборот, если список является списком последовательностей, он лучше итерации с итератором.
В JDK ясно, что в алгоритме пересечения списка, особенно огромного размера, мы должны попытаться определить, принадлежит ли он к случайному аккурату (например, ArrayList) или списку последовательностей (например, LinkedList). Потому что алгоритм обхода, подходящий для списка случайных результатов, очень отличается при использовании в списке последовательностей. Обычно используемый метод:
Чтобы вынести суждение:
if (экземпляр списка randomaccess) {for (int m = 0; m <list.size (); m ++) {}} else {iterator iter = list.iterator (); while (iter.hasnext ()) {}}тест:
открытый класс testrandomaccess {@test public void testtraverse () {arraylist <Integer> arraylist = new ArrayList <Integer> (); LinkedList <Integer> LinkedList = new LinkedList <Integer> (); initlist (Arraylist, 1000); initlist (LinkedList, 1000); System.out.println ("ArrayList реализует интерфейс randomaccess"); Implrandomaccesstraverse (ArrayList); // потребовалось 10 мс для system.out.println («LinkedList не реализует интерфейс случайного анализа»); Implrandomaccesstraverse (LinkedList); // потребовалось 434 мс для system.out.println ("/warraylist не внедряет интерфейс случайного рисунка"); noimplrandomaccesstraverse (Arraylist); // потребовалось 39 мс для system.out.println («LinkedList не реализует интерфейс случайного анализа»); noimplrandomaccesstraverse (LinkedList); // потребовалось 27 мс до} private long starttime = 0; Приватный длинный конец = 0; // Инициализировать список public void initlist (список <integer> list, int n) {for (int i = 0; i <n; i ++) {list.add (i); }} // Существует обход всех данных, которые реализуют интерфейс randomaccess, public void ImplrandomaccessTraverse (список) {startTime = System.currentTimeMillis (); for (int count = 0; count <= 1000; count ++) {for (int i = 0; i <list.size (); i ++) {list.get (i); }} endtime = System.currentTimeMiMilis (); System.out.println («Это потребовалось в общей сложности итерации с использованием цикла» + (EndTime - StartTime) + «время MS»); } // Отставление всех данных без реализации интерфейса случайного интерфейса public void noimplrandomaccesstraverse (список) {startTime = System.currentTimeMillis (); for (int count = 0; count <= 1000; count ++) {for (iterator itr = list.iterator (); itr.hasnext ();) {itr.next (); }} endtime = System.currentTimeMiMilis (); System.out.println («Это потребовалось в общей сложности итераций с использованием итератора» + (EndTime - StartTime) + «время MS»); }}Вышеупомянутое всеобъемлющее понимание интерфейса Java Randomaccess - это все контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.