当前位置: 首页 > 面试题库 >

Java在迭代期间将元素添加到集合中

乐正心水
2023-03-14
问题内容

在迭代集合时是否可以向集合中添加元素?

更具体地说,我想遍历一个集合,如果一个元素满足特定条件,我想向集合中添加一些其他元素,并确保也对这些添加的元素进行遍历。(我意识到这可能会导致循环终止,但是我很确定不会发生这种情况。)

Sun 的Java教程建议不可能:“请注意,这Iterator.remove是在迭代过程中修改集合的唯一安全方法;如果在迭代进行过程中对基础集合进行了其他任何修改,则行为未指定。”

因此,如果我无法使用迭代器做我想做的事情,那么你建议我做些什么?


问题答案:

如何使用要迭代的元素构建队列?当您想添加元素时,将它们排入队列的末尾,并继续删除元素,直到队列为空。广度优先搜索通常是这样工作的。



 类似资料:
  • 问题内容: 我知道在迭代列表时不允许删除元素,但是在迭代时允许将元素添加到python列表中。这是一个例子: 我已经在我的代码中尝试过了,它似乎可以正常工作,但是我不知道是否是因为我很幸运,将来它会折断吗? 编辑:我不愿复制列表,因为“ myarr”很大,因此会太慢。另外,我需要使用“ somecond()”检查附加对象。 编辑:在某些时候“ somecond(a)”将为假,因此不能有无限循环。

  • 问题内容: AFAIK有两种方法: 遍历集合的副本 使用实际集合的迭代器 例如, 和 是否有任何理由偏爱一种方法(例如,出于可读性的简单原因而偏爱第一种方法)? 问题答案: 让我举几个例子,并提出一些避免方案。 假设我们有以下藏书 收集并删除 第一种技术是收集所有要删除的对象(例如,使用增强的for循环),并在完成迭代后删除所有找到的对象。 假设你要执行的操作是“删除”。 如果要“添加”此方法也可

  • AFAIK,有两种方法: 迭代集合的副本 使用实际集合的迭代器 例如, 而且 有没有理由偏爱一种方法而不是另一种方法(例如,由于可读性的简单原因而偏爱第一种方法)?

  • 问题内容: 我有一个单击按钮时执行的功能。假设有一个循环将1到10加到。我将该数据添加到中。它完美地工作,并且数字相加。然后我在循环中添加了一个。但是输出是不同的。我想每秒增加1个元素。但是现在它等待10秒,并在第10秒结束时将所有1到10加在一起。我在哪里错了? 问题答案: 您应该在单独的线程中更新列表,否则最终将阻塞事件分发线程。 请尝试以下操作:

  • sadd key member 成功返回1,如果元素以及在集合中返回0,key对应的set不存在返回错误

  • 问题内容: 我想写这样的代码- 但是我也 尝试使用,但是我得到了相同的结果 问题答案: 解释原因 for- each循环也在内部创建的迭代器的。在遍历map时,您已经通过将值再次放入map()来修改了map的结构,这会导致这种情况。 甚至在文档中也对此做了很好的解释- 此类的所有“集合视图方法”返回的迭代器都是快速失败的:如果在创建迭代器后的任何时间对结构进行结构修改,则除了通过迭代器自己的rem