首页 > Java > java教程 > 项目 - 与传统的 for 循环相比,更喜欢 for-each 循环

项目 - 与传统的 for 循环相比,更喜欢 for-each 循环

Patricia Arquette
发布: 2024-10-04 06:12:29
原创
701 人浏览过

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

传统 for 循环的问题:

  • 传统的 for 循环具有索引变量或迭代器,它们会产生不必要的“碎片”并增加出错的机会。
  • 编译器可能无法检测到使用错误索引或迭代器等错误。
  • 传统的循环对于数组和集合来说是不同的,导致维护和类型之间的切换困难。

集合中传统 for 循环的示例:

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

登录后复制

数组中传统 for 循环的示例:

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

登录后复制

for-each 循环的优点:

  • 简化:消除不必要的迭代器和索引,只关注元素。
  • 更少的错误:减少与控制变量相关的错误的可能性。
  • 灵活性:数组和集合的工作方式相同,可以轻松在它们之间切换。
  • 性能:与传统的for循环相比,没有性能损失。

For-each 循环示例:

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

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

登录后复制

嵌套迭代中传统 for 循环的问题:

  • 在嵌套循环中显式使用迭代器可能会导致难以检测的错误。
  • 示例:在错误的迭代器上调用 next() 可能会引发异常或生成意外结果。

迭代器嵌套循环中的常见错误:

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

登录后复制

修复嵌套的 for-each 循环:

  • 使用 for-each 循环会自动消除这些错误,因为没有对迭代器的显式控制。

for-each 的正确示例:

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

登录后复制

for-each 循环的局限性:

  • 破坏性过滤:不允许在迭代过程中删除元素,因此需要使用显式迭代器或removeIf(Java 8)等方法。
  • 转换:如果您需要修改列表或数组的元素,for-each 循环是不够的,因为您需要访问索引。
  • 并行迭代:当需要并行迭代多个集合时,for-each 循环无法正常工作,因为需要对索引进行显式控制。

使用传统 for 循环进行转换的示例:

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

登录后复制

可迭代接口:

  • for-each 循环适用于任何实现 Iterable 接口的对象,从而更容易迭代新类型的集合。

可迭代接口:

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

登录后复制

结论:

  • 为了清晰、安全和灵活性,总是更喜欢 for-each 循环。仅在真正必要时才使用传统的 for 循环(转换、破坏性过滤或并行迭代)。

以上是项目 - 与传统的 for 循环相比,更喜欢 for-each 循环的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板