问题标签 [iterator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
429 浏览

c# - 在 C# 中的 foreach 语句中的每次迭代中都会调用返回集合的方法吗?

我今天早上正在处理一些 C# 代码,我有类似的东西:

因此,由于我对语言框架没有完全了解,我想知道 GetDataTable() 是否在每次迭代完成时被调用,或者它是否只被调用一次并且结果数据(将是 Rows)保存在内存循环通过它。无论如何,我声明了一个新集合来保存它并从那里开始工作......

我添加了一个新变量,所以我做了:

但我不太确定这是否有必要。

提前致谢。

0 投票
4 回答
6400 浏览

java - 迭代 Map 时允许对 Map 进行哪些基本操作?

假设我正在迭代 Java 中的 Map ......我不清楚在迭代它的过程中我可以对该 Map 做什么。我想我对迭代器接口删除方法的 Javadoc 中的这个警告很困惑:

[...]如果在迭代过程中以任何方式而不是通过调用此方法来修改底层集合,则迭代器的行为是未指定的。

我确信我可以毫无问题地调用 remove 方法。但是在遍历 Map 集合时,我可以:

  1. 使用 Map 类 put 方法更改与键关联的值(使用现有键放置)?

  2. 使用 Map 类 put 方法添加新条目(使用新键放置)?

  3. 使用 Map 类 remove 方法删除条目?

我的猜测是我可能可以安全地执行 #1(放入现有密钥),但不能安全地执行 #2 或 #3。

提前感谢您对此的任何澄清。

0 投票
4 回答
568 浏览

python - 重构此 Python 代码以迭代容器

当然有更好的方法来做到这一点?

问题是有时查询集是 None ,当我尝试迭代它时会导致异常。在这种情况下,我只想将结果设置为一个空列表。这段代码来自 Django 视图,但我认为这并不重要——这似乎是一个更普遍的 Python 问题。

编辑:我发现是我的代码将一个空的查询集变成了一个“无”而不是返回一个空列表。能够假设查询集始终是可迭代的,通过允许删除“if”语句来简化代码。下面的答案可能对遇到相同问题但无法修改其代码以保证查询集不是“无”的其他人有用。

0 投票
6 回答
9785 浏览

c# - 如何一次迭代两个数组?

我在解析文本文件时构建了两个数组。第一个包含列名,第二个包含当前行的值。我需要一次遍历两个列表来构建地图。现在我有以下内容:

这工作得很好,但它并不能完全满足我的优雅感,如果数组的数量大于两个(我偶尔必须这样做),它会变得非常毛茸茸。有没有人有另一个更简洁的成语?

0 投票
6 回答
7164 浏览

java - 在迭代java期间修改集合

我正在寻找一种递归方法迭代。

我有一个要迭代的对象列表,然后检查它们的子对象。

递归:

我想把它改成这样

很抱歉伪代码很差,但基本上我想迭代子对象,同时将新对象附加到列表末尾以进行检查。

我可以使用列表来执行此操作,并执行类似的操作

但我真的不想添加重复的子对象。当然,我可以在添加它之前检查 list.contains(each subObject) 是否。

但我很想使用 Set 来完成清洁工作。

所以基本上无论如何都要在迭代它时附加到一个集合,或者是否有一种更简单的方法可以使列表像一个集合而不是手动检查.contains()?

任何意见表示赞赏。

谢谢

0 投票
6 回答
27588 浏览

c# - 收益中断有什么用?

可能重复:
“yield break”是什么意思?在 C# 中做?

任何人都可以看到使用“break”或“return”无法实现的“yield break”语句的用途。

这种说法似乎完全没有用。更重要的是,如果没有这个语句,“yield return X”语句可能会被简化为“yield X”,这样更易​​读。

我错过了什么?

0 投票
7 回答
3096 浏览

c++ - 遍历容器的最佳方法

这两种迭代容器的方法的优点/缺点是什么/您更喜欢哪一种以及为什么:

或者

附属问题:i++ 还是 ++i?为什么?

0 投票
4 回答
644 浏览

c++ - 从2个向量中提取元素?

我有 2 个向量,其中一个具有 vec1{e1,e2,e3,e4},另一个具有 vec2 {e2,e4,e5,e7}

如何有效地从上述向量中获取三个向量,以使 1.具有仅在 vec1 中可用的元素,类似地 2 仅具有 vec2 元素和 3.具有公共元素

0 投票
9 回答
1563 浏览

c++ - 将 STL 容器与迭代器一起使用的常见误用是什么?

将STL容器与迭代器一起使用的常见误用是什么?

0 投票
5 回答
36494 浏览

java - 使用 for 语句和 while 语句向前移动迭代器的区别

当我使用对象的迭代器时,我使用了一个while 循环(如每本学习 Java 的书中所写,如Bruce Eckel 的Thinking in Java ):

但有时我看到有人使用for 循环

我不明白这个选择:

  • 当我有一个带有序数序列(作为数组)的集合或具有用于步骤的特殊规则(通常声明为简单增量)的集合时,我使用for 循环counter++
  • 当循环结束时我使用while循环,我没有这个约束,但只有一个退出的逻辑条件。

这是一个没有其他原因的样式编码问题,还是存在一些我不知道的其他逻辑(例如性能)?

感谢您的每一个反馈