A definição da interface RandomAccess no documento JDK é a seguinte: interface pública RandomAccess
A seguir, a tradução da anotação do JDK
A lista implementa a interface de marcação usada para indicar que suporta acesso aleatório rápido (geralmente em tempo fixo). O principal objetivo dessa interface é permitir que os algoritmos gerais mudem seu comportamento, fornecendo um bom desempenho quando aplicado a listas de acesso aleatório ou contínuo.
Ao aplicar o melhor algoritmo para operar listas de acesso aleatório (como a Arraylist) a uma lista de acesso contínuo (como o LinkedList), o comportamento do termo quadrático pode ser gerado. Se um algoritmo for aplicado a uma lista de acesso contínua, ele será incentivado a usar um algoritmo de lista geral para verificar se uma determinada lista é uma instância dessa interface antes de aplicar um algoritmo que possa fornecer desempenho ruim e para alterar seu comportamento se for necessário um desempenho aceitável.
Agora foi reconhecido que a diferença entre acesso aleatório e contínuo é frequentemente vago. Por exemplo, se a lista for grande, algumas implementações de lista fornecem tempo de acesso linear incremental, mas na verdade são tempo de acesso fixo. Essa implementação de lista geralmente deve implementar essa interface.
Enfatize: o que é recomendado no JDK é implementar a interface aleatomaccess para coleções de listas o máximo possível
Se a classe de coleta for uma implementação do RandomAccess, tente atravessar -a para (int i = 0; i <tamanho; i ++) em vez do iterador do iterador.
Por outro lado, se a lista for uma lista de sequência, é melhor iterar com um iterador.
Está claro no JDK que, no algoritmo de travessia da lista, especialmente tamanho enorme, devemos tentar determinar se ele pertence ao RandomAccess (como ArrayList) ou lista de sequência (como o LinkedList). Porque o algoritmo de travessia adequado para a lista RandomAccess é muito diferente quando usado na lista de seqüências. O método comumente usado é:
Para fazer um julgamento:
if (Instância da lista de RandomAccess) {for (int m = 0; m <list.size (); m ++) {}} else {iterator iter = list.iterator (); while (iter.hasnext ()) {}}teste:
classe pública testrandomaccess {@test public void testTraverse () {ArrayList <Teger> ArrayList = new ArrayList <Teger> (); LinkedList <Teger> LinkedList = new LinkedList <Teger> (); initList (Arraylist, 1000); initList (LinkedList, 1000); System.out.println ("ArrayList implementa a interface aleatória de ARDONCESS"); ImplrandomAccessTraverse (ArrayList); // Foram necessários 10ms para System.out.println ("LinkedList não implementa a interface aleatória"); ImplrandomAccessTraverse (LinkedList); // Foram necessários 434ms para System.out.println ("/NarrayList não implementa a interface aleatória"); noimplrandomaccesstrversese (ArrayList); // Foram necessários 39ms para o System.out.println ("LinkedList não implementa interface aleatória"); noimplrandomaccesstrverSerse (LinkedList); // Levou 27ms para} Private Long StartTime = 0; Private Long Endtime = 0; // Inicialize a lista Public void InitList (List <Teger> List, int n) {for (int i = 0; i <n; i ++) {list.add (i); }} // Há uma travessia de todos os dados que implementa a interface aleatória, public void ImplrandomaccessRaverse (lista da lista) {startTime = system.currenttimEmillis (); for (int conting = 0; count <= 1000; count ++) {for (int i = 0; i <list.size (); i ++) {list.get (i); }} endtime = System.currenttimemillis (); System.out.println ("foi necessário um total de iteração usando o loop" + (Endtime - StartTime) + "MS Time"); } // A travessia de todos os dados sem implementar a interface aleatória da interface pública void noimplrandomaccesstrverse (list list) {startTime = system.currenttimemillis (); for (int conting = 0; count <= 1000; count ++) {for (iterator itr = list.iterator (); itr.hasnext ();) {itr.Next (); }} endtime = System.currenttimemillis (); System.out.println ("Foram necessárias um total de iterações usando o iterador" + (EndTime - StartTime) + "MS Time"); }}O entendimento abrangente acima da interface Java RandomAccess é todo o conteúdo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.