La definición de la interfaz RandomAccess en el documento JDK es la siguiente: interfaz pública RandomAccess
La siguiente es la traducción de la anotación de JDK
La lista implementa la interfaz de etiquetado utilizada para indicar que admite acceso aleatorio rápido (generalmente fijo en tiempo fijo). El objetivo principal de esta interfaz es permitir que los algoritmos generales cambien su comportamiento, proporcionando así un buen rendimiento cuando se aplica a listas de acceso aleatorias o continuas.
Al aplicar el mejor algoritmo para operar listas de acceso aleatorio (como ArrayList) a una lista de acceso continuo (como LinkedList), se puede generar el comportamiento del término cuadrático. Si se aplica un algoritmo a una lista de acceso continuo, se alienta a usar un algoritmo de lista general para verificar si una lista determinada es una instancia de esta interfaz antes de aplicar un algoritmo que puede proporcionar un rendimiento de bajo rendimiento y cambiar su comportamiento si se requiere un rendimiento aceptable.
Ahora se ha reconocido que la diferencia entre el acceso aleatorio y continuo a menudo es vaga. Por ejemplo, si la lista es grande, algunas implementaciones de la lista proporcionan un tiempo de acceso lineal incremental, pero en realidad son un tiempo de acceso fijo. Dicha implementación de la lista generalmente debe implementar esta interfaz.
Enfatizar: lo que se recomienda en JDK es implementar la interfaz RandomAccess para las colecciones de listas tanto como sea posible
Si la clase de recolección es una implementación de RandomAccess, intente atravesarlo con (int i = 0; i <size; i ++) en lugar del iterador iterador.
Por el contrario, si la lista es una lista de secuencias, es mejor iterar con un iterador.
Está claro en el JDK que en el algoritmo transversal de la lista, especialmente en gran tamaño, debemos tratar de determinar si pertenece a RandomAccess (como ArrayList) o Lista de secuencias (como LinkedList). Porque el algoritmo transversal adecuado para la lista RandomAccess es muy diferente cuando se usa en la lista de secuencias. El método de uso común es:
Para hacer un juicio:
if (enumere la instancia de RandomAccess) {for (int m = 0; m <list.size (); m ++) {}} else {iterator iterator = list.iterator (); while (iter.hasnext ()) {}}prueba:
public class testRandomAccess {@test public void testtraververse () {ArrayList <Integer> ArrayList = new ArrayList <Integer> (); LinkedList <Integer> LinkedList = new LinkedList <Integer> (); InitList (ArrayList, 1000); InitList (LinkedList, 1000); System.out.println ("ArrayList implementa la interfaz RandomAccess"); ImplandomAcCesStraverse (ArrayList); // Tomó 10 ms a System.out.println ("LinkedList no implementa la interfaz RandomAccess"); ImplandomACCesStraverse (LinkedList); // Tomó 434ms a System.out.println ("/NarrayList no implementa la interfaz RandomAccess"); noimplrandomAccStraverse (ArrayList); // Tomó 39ms a System.out.println ("LinkedList no implementa la interfaz RandomAccess"); NoimplrandomAccesStraverse (LinkedList); // tardó 27 ms para} privado de inicio de inicio = 0; Tiempo de extremo largo privado = 0; // Inicializar la lista public void initList (list <integer> list, int n) {for (int i = 0; i <n; i ++) {list.add (i); }} // Hay un recorrido de todos los datos que implementa la interfaz RandomAccess, public void implRandomAccesStraverse (List List) {starttime = system.currentTimemillis (); for (int count = 0; count <= 1000; count ++) {for (int i = 0; i <list.size (); i ++) {list.get (i); }} EndTime = System.CurrentTimemillis (); System.out.println ("tomó un total de iteración usando loop" + (endtime - starttime) + "ms time"); } // El recorrido de todos los datos sin implementar la interfaz RandomAccess public void noiMPlRandomAccesStraverse (List List) {starttime = system.currentTimemillis (); for (int count = 0; count <= 1000; count ++) {for (iterator ITR = list.iterator (); itr.hasNext ();) {itr.next (); }} EndTime = System.CurrentTimemillis (); System.out.println ("Tomó un total de iteraciones usando iterator" + (endtime - starttime) + "ms time"); }}La comprensión integral anterior de la interfaz Java RandomAccess es todo el contenido que comparto con ustedes. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.