遍历用for还是foreach?

这篇具有很好参考价值的文章主要介绍了遍历用for还是foreach?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

遍历用for还是foreach?这篇文章帮你轻松选择!

在编程的世界里,我们经常需要对数据进行循环处理,常用的两种方法就是:for循环和foreach循环。想象你站在一条装满宝贝的传送带前,你要亲手检查每一件宝贝。使用for循环就像是你亲手控制传送带的速度和方向,而使用foreach循环则是传送带自动运转,你只需专注于宝贝本身。好,下面就让我们一步步深入了解下这两种方法吧!

应用场景

for循环:好比你手握一张购物清单(索引),按照顺序逐项挑选商品。在数组、列表等数据结构中,for循环通过下标访问元素。这意味着,当你需要特定的遍历顺序,或者想要在循环中更改计数器时,for循环就是你的菜。

foreach循环:更像是一个自动售货机,你只需站在出口等待,它会按顺序一个个送出商品。foreach适用于不需要关心索引,仅需遍历并处理每个元素的情况。尤其在处理集合类时,foreach更显简洁高效。

使用方法

我们用一个例子来感受一下for和foreach吧。假设你是个游戏玩家,你有一排宝箱需要打开。

for循环的使用:在for循环中,通常会定义一个迭代变量,并指定迭代变量的初始值、循环条件和迭代变量的更新方式,在循环体中根据索引值访问数组或列表中的元素。

let treasureChests = ['金币', '宝石', '魔法药水', '地图', '钥匙'];
// 使用for循环打开每个宝箱
for (let i = 0; i < treasureChests.length; i++) {
    openChest(treasureChests[i]); // 打开宝箱
}

在这段JavaScript代码里,i就像是你手里的遥控器,从0开始按,一直按到最后一个宝箱。

foreach循环的使用:foreach简化了迭代过程,不需要显式地定义迭代变量和更新迭代变量,也就是无需手动管理索引,编译器会自动帮我们完成元素的迭代获取。

treasureChests.forEach((chest) => {
    openChest(chest); // 打开宝箱
});

这里的foreach循环直接告诉你“这是个宝箱”,然后你就打开它。注意,我们这里没有使用索引,它是自动遍历数组中的每个元素。

注意在大多数现代编程语言中,foreach 循环(或其等效的遍历结构)设计的初衷是用来读取集合中的元素,而不是用于修改集合本身,因此我们无法在 foreach 循环中直接更改集合中对象的引用,但是我们可以修改对象中的属性。

C#的例子:

foreach (var item in collection)
{
    item.Property = newValue; // 允许修改对象的属性
    // item = new Object(); // 错误!不允许修改对象的引用
}

还需要注意如果集合中的元素是值类型或者基本数据类型,如int、double、string等,当你在foreach循环中迭代时,由于每次迭代获取的是该元素的一个副本,因此直接修改这个副本不会影响原数组中的元素。

let numbers = [1, 2, 3];

numbers.forEach(item => {
  item = 4; // 这不会改变原始数组
});

console.log(numbers); // [1, 2, 3]

底层原理

for循环像是有条不紊的工厂流水线。在每次迭代中,都有一个明确的开始(初始化表达式),一个持续条件(条件表达式),和一个精确的进度控制(迭代表达式)。这个流水线会在你设定的条件下反复运转,直到任务完成。

遍历用for还是foreach?

foreach循环则更像是智能的机器人,它内置了遍历的逻辑。在像Java、C#这样的语言中,foreach循环背后是基于Iterable接口的。只要集合实现了Iterable接口,就可以用foreach来遍历。机器人(foreach循环)会自动调用集合的iterator方法,获取一个迭代器,然后通过这个迭代器遍历集合中的每个元素。

遍历用for还是foreach?

编程思想

for循环体现的是一种经典的命令式编程思想,它关注如何通过明确的步骤去解决问题。你需要告诉程序每一个要执行的动作,这种方式给予了程序员高度的控制权,但同时也增加了复杂性和出错的可能性。

foreach循环则是声明式编程的体现,更关注做什么而不是怎么做。你只需要声明你的需求(遍历集合),具体的遍历逻辑则被抽象掉了。这使得代码更简洁,也更易于阅读和维护,但牺牲了一些控制力。

遍历用for还是foreach?

执行效率

有的同学可能对性能比较关心。就执行速度而言,for 和 foreach 循环的效率差异通常是微不足道的,特别是在现代编译器和解释器优化的情况下。但是,还是有一些细微的差别:

  • for循环:在某些情况下,for 循环可能略微更快,因为它的控制结构很简单(通常是一个索引和一个结束条件的比较)。如果你在循环中需要使用索引,或者你需要逆序遍历,或者以非标准的步长遍历,使用 for 循环可以直接满足这些需求而无需额外的计算或间接的访问。
  • foreach循环foreach 循环通常提供了对集合的简化访问,隐藏了迭代的细节。在一些语言中,foreach 循环背后可能使用了迭代器或者其他机制,这可能引入了轻微的性能开销。不过,对于只读操作或者不需要索引的情况,这个开销通常是可以忽略不计的。

在实际应用中,除非你正在编写非常性能敏感的代码,否则循环的选择应该更多地基于代码的清晰度和可维护性,而不是微小的性能差异。在大多数情况下,foreach 循环提供了更简洁、更易读的代码,尤其是当遍历集合而不需要索引时。

总结

for循环就像是多功能的瑞士军刀,适合于那些需要精确控制循环过程的场景。你可以自由地选择起点和终点,甚至可以逆向遍历或调整步长。

foreach循环则像是专一的榔头,对于简单地遍历集合来说,使用起来既快捷又高效。它让你免去了处理索引的烦恼,让你可以专注于元素本身。

编程不仅仅是关于写代码,更是关于选择合适的工具来解决问题。for和foreach就像是你工具箱里的两把锤子,它们各有所长,懂得在不同的情境下选择合适的一把,能让你的编程之路更加顺畅。

关注萤火架构,加速技术提升!文章来源地址https://www.toymoban.com/news/detail-825071.html

到了这里,关于遍历用for还是foreach?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mybatis双重foreach实现遍历map中的两个list数组

    前端传值时可能会有多个字段传递过来,需要后台将这多个字段拼接为 name in (? , ?) and name1 in (? , ?) and name2 in (? , ?) 作为sql查询条件…如下图sql语句,即实现多个and xxx in(?,?,?) 拼接 前端传递的是json字符串,json中name和infos是一对具有对应关系的对象,且json中会有多条这种对象

    2024年02月15日
    浏览(26)
  • Java8 stream、List forEach 遍历对象 List 对某一字段重新赋值

    Java8 stream、List forEach 遍历对象 List 对某一字段重新赋值 经常会需要遍历对象 List 对某一字段重新赋值,使用 Java8 stream 或者 List forEach 操作实现非常便捷。 一、Java8 stream 操作 示例代码如下: 二、List forEach 操作 示例代码如下: 将 Object 替换为需要提取的对象即可。 遍历对象

    2024年02月16日
    浏览(37)
  • for与foreach效率问题

    来比较一下两种for循环对ArrayList和LinkList集合的循环性能比较。 首先简单的了解一下ArrayList和LinkList的区别: ArrayList:ArrayList是采用数组的形式保存对象的,这种方式将对象放在连续的内存块中,所以插入和删除时比较麻烦,查询比较方便。 LinkList:LinkList是将对象放在独立

    2024年02月08日
    浏览(39)
  • Kotlin基础入门 - for、forEach 循环

    不论身处何方 for循环这种操作都随处可见,鉴于大多数Android开发都是从Java转到Kt的,所以我的思路是从Java的使用习惯来讲一些Kt 的for、forEach 循环方式 基础 for循环 for循环 一般作用于 list、map数据集合 ,这里我直接创建了一个只读List集合 提前了解 惯性 for循环 所谓的惯性

    2024年01月16日
    浏览(29)
  • 微信小程序——for与foreach

    目录 一、for语句 1、示例语法 2、示例代码 二、foreach语句 1、使用方法 2、多层嵌套 总结         在微信小程序的开发之中,循环是我们不可避免的会遇到的东西,其中呢,我们使用最多的就是for语句和foreach语句了,今天我们来详细了解一下这两种语句的具体使用方法吧

    2024年02月10日
    浏览(35)
  • 【JS】for 与 forEach 分别如何跳出循环

    for 循环 在 for 循环中,退出循环的两种方式: break; 退出整个循环 continue; 退出当次循环 break 退出整个循环 continue 退出当次循环 forEach 在JavaScript中, forEach 方法是用于遍历数组的方法,它会对数组中的每个元素执行指定的操作。 forEach 方法本身 并不提供直接的方式来跳出循

    2024年02月12日
    浏览(33)
  • Java循环对比:传统for循环、增强型for循环和forEach循环

    传统的for循环是一种经典的循环结构,在Java中广泛使用。 以下是传统for循环的特点: 灵活控制:传统for循环使用形式为for (初始化表达式; 终止条件; 步进表达式)的语法,可以手动控制循环的索引,并根据需要执行自定义操作。 索引访问:传统for循环通过索引访问集合或数

    2024年02月07日
    浏览(29)
  • matlab中的foreach、for in 循环、迭代器

    I 是个行向量,对于行向量,可以像上面的语法那样在 for 循环中使用,遍历 I 中的每一个元素。 如果 I 是列向量,就不行了。 可以看到 a 直接被赋值成整个列向量。 可见,for 循环中被用来迭代的矩阵会被看成只有一行,里面的元素是一个个列向量,for 循环一次取出里面的

    2024年02月11日
    浏览(38)
  • 喵叔闲扯--C# 中for和foreach的性能

    在C#中, for 和 foreach 是两种常用的循环结构,用于迭代集合中的元素。尽管它们在功能上相似,但它们在性能、空间效率和垃圾回收(GC)方面有一些区别。在下面的讨论中,我将详细解释这些方面,并提供相关的代码示例。 1. 时间效率: for 循环通常比 foreach 循环具有更高

    2024年02月16日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包