para cada loop vs. iterator: eficiência na coleção Traversal
Introduction
quando travessing uma coleção em java, the ARIDES
quando travessing e uma coleção em java, the ARIDS. Este artigo explora as diferenças de eficiência entre essas duas abordagens. Ele utiliza o iterador internamente: list
iterator
Lista = new ArrayList(); for (Integer integer : a) { integer.toString(); }
Um iterador fornece uma interface padronizada para iterando o Over Collections. Permite controle personalizado sobre o processo de travessia.
for (iterador
Lista = new ArrayList(); for (Iterator iterator = a.iterator(); iterator.hasNext();) { Integer integer = iterator.next(); integer.toString(); }
a abordagem do iterador (ambos for-cada para o loop e o iterador explícito) podem ser significativamente mais eficientes para determinadas estruturas de dados. Por exemplo, em uma lista vinculada, Get (i) é uma operação O (n). Usando o Operação O (1) Next () de um iterador garante que o loop seja executado no tempo O (n), enquanto o loop get (i) seria executado em O (n 2 ) time. BYTECODE para ambas as abordagens:
for-Each Loop
for (int i = 0; iaload 1 InvokeInterface java/util/list.iterator () ljava/util/iterator; Astore 3 ...
iteratorlist
a = new ArrayList (); for (iterador iterator = a.Iterator (); iterator.hasnext ();) { Número inteiro inteiro = iterator.Next (); Integer.toString (); } aload 1 InvokeInterface java/util/list.iterator () ljava/util/iterator; Astore 2 ...
Como você pode observar, o bytecode gerado é idêntico, indicando nenhuma penalidade de desempenho no uso de qualquer abordagem. O iterador oferece apenas vantagens ao trabalhar com estruturas de dados específicas ou exigir comportamento de iteração personalizada. Para simplicidade e legibilidade, o loop for-Eacha geralmente é a escolha preferida.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3