項目 - 従来の for ループよりも for-each ループを優先する

Patricia Arquette
リリース: 2024-10-04 06:12:29
オリジナル
588 人が閲覧しました

Item - Prefira o loop for-each em vez dos loops for tradicionais

Problemas com o loop for tradicional:

  • Loops for tradicionais têm variáveis de índice ou iteradores, o que pode gerar "entulho" desnecessário e aumentar as chances de erro.
  • Erros como usar o índice ou iterador errado podem não ser detectados pelo compilador.
  • O loop tradicional é diferente para arrays e coleções, dificultando a manutenção e troca entre tipos.

Exemplo de loop for tradicional em coleção:

for (Iterator<String> i = collection.iterator(); i.hasNext();) {
    String element = i.next();
    // Processa elemento
}

ログイン後にコピー

Exemplo de loop for tradicional em array:

for (int i = 0; i < array.length; i++) {
    String element = array[i];
    // Processa elemento
}

ログイン後にコピー

Vantagens do loop for-each:

  • Simplificação: Elimina iteradores e índices desnecessários, focando apenas nos elementos.
  • Menos Erros: Reduz a possibilidade de erros associados a variáveis de controle.
  • Flexibilidade: Funciona da mesma forma para arrays e coleções, facilitando a troca entre eles.
  • Desempenho: Não há perda de desempenho em relação ao loop for tradicional.

Exemplo de loop for-each:

for (String element : collection) {
    // Processa elemento
}

for (String element : array) {
    // Processa elemento
}

ログイン後にコピー

Problemas com loops for tradicionais em iterações aninhadas:

  • Usar iteradores explicitamente em loops aninhados pode causar erros difíceis de detectar.
  • Exemplo: Chamar next() no iterador errado pode lançar uma exceção ou gerar resultados inesperados.

Erro comum em loops aninhados com iteradores:

for (Iterator<Suit> i = suits.iterator(); i.hasNext();) {
    for (Iterator<Rank> j = ranks.iterator(); j.hasNext();) {
        System.out.println(i.next() + " " + j.next());
    }
}

ログイン後にコピー

Correção com loops for-each aninhados:

  • Usar loops for-each elimina automaticamente esses erros, pois não há controle explícito de iteradores.

Exemplo correto com for-each:

for (Suit suit : suits) {
    for (Rank rank : ranks) {
        System.out.println(suit + " " + rank);
    }
}

ログイン後にコピー

Limitações do loop for-each:

  • Filtragem destrutiva: Não permite remover elementos durante a iteração, sendo necessário usar um iterador explícito ou métodos como removeIf (Java 8+).
  • Transformação: Se precisar modificar os elementos de uma lista ou array, o loop for-each não é suficiente, pois você precisa acessar o índice.
  • Iteração Paralela: Quando é necessário iterar sobre múltiplas coleções em paralelo, o loop for-each não funciona adequadamente, pois é necessário controle explícito sobre os índices.

Exemplo de transformação com loop for tradicional:

for (int i = 0; i < list.size(); i++) {
    list.set(i, modify(list.get(i)));
}

ログイン後にコピー

Interface Iterable:

  • O loop for-each funciona com qualquer objeto que implemente a interface Iterable, facilitando a iteração em novos tipos de coleções.

Interface Iterable:

public interface Iterable<T> {
    Iterator<T> iterator();
}

ログイン後にコピー

Conclusão:

  • Sempre prefira loops for-each para maior clareza, segurança e flexibilidade. Use loops for tradicionais apenas quando for realmente necessário (transformação, filtragem destrutiva ou iteração paralela).

以上が項目 - 従来の for ループよりも for-each ループを優先するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!