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

如何迭代和修改Java集?

谭思博
2023-03-14
问题内容

假设我有一个整数集,并且我想增加集合中的每个整数。我该怎么做?

我可以在迭代时添加和删除集合中的元素吗?

在迭代原始集合时,是否需要创建一个新集合以将元素“复制并修改”到其中?

编辑:如果集合中的元素是不可变的呢?


问题答案:

您可以在迭代期间使用Iterator对象安全地从集合中删除;尝试在迭代时通过其API修改集合会破坏迭代器。Set类通过getIterator()提供一个迭代器。

但是,整数对象是不可变的。我的策略是遍历集合,并为每个Integer i将i +
1添加到一些新的临时集合中。完成迭代后,请从原始集中删除所有元素,然后添加新的临时集中的所有元素。

Set<Integer> s; //contains your Integers
...
Set<Integer> temp = new Set<Integer>();
for(Integer i : s)
    temp.add(i+1);
s.clear();
s.addAll(temp);


 类似资料:
  • 我对python和编程都是新手,所以我很迷茫。我已经编写了一个“Node”类(如下文底部所示),它实例化了一个二叉搜索树和几个方法,如insert()和elements()(通过按顺序横切树返回元素列表)。我应该使这个类是可迭代的:“iter__(self)应该返回一个NodeIterator,它按照排序顺序从树中返回元素。修改树不应该修改现有的迭代器。”我现在正试图通过在类中插入以下代码来实现这

  • 我有一个json blob,如下所示: 这只是一个在这里发布的例子。在这个例子中,我们看到它提供了一个学校每年发生的所有事件的列表,该列表是一个累积列表,即上一年的事件也会被追加。我们知道的是,每年的活动都将以“会议开始”活动开始。我想通过这件事,以最新的一系列事件结束。请忽略事件名称中的时间戳或年份,它们只是示例,我在现实世界中没有此类信息。我需要的最终结果是: 所以,我想保留从“会话开始”事件

  • 问题内容: 我正在尝试遍历: …并提取中的每个元素。这是我的方法: 这里的问题是对的每次调用都会从中删除元素,从而修改其大小,从而导致以下错误: 那么…当元素动态变化时,我该如何遍历其中的元素呢? 问题答案: 其他人则提到了正确的解决方案,而没有实际阐明。所以这里是: 另外,如果您想安全地在assign函数中更改映射,则需要传入迭代器(只能使用remove函数,并且只能使用一次)或条目来更改值。

  • 问题内容: 我知道您不应在遍历列表时添加/删除项目。但是,如果不更改列表长度,是否可以修改要迭代的列表中的项目? 还是应该迭代列表索引?像那样: 问题是:以上两种方式都是允许的,还是只有第二种是没有错误的? 如果答案是肯定的,以下代码段是否有效? UPD。我想在python文档中看到“允许这些操作”而不是某人的假设。 问题答案: 可以这么说,您 不是在 修改列表。您只是在修改列表中的元素。我不认为

  • 问题内容: 上面的python代码使输出与预期的完全不同。我想循环播放项目,以便在循环播放时可以跳过某个项目。 问题答案: 该代码试图在迭代列表时修改列表。我在任何情况下都不会这样做。 你可以使用运算符跳过列表中的每三个项目。 关于我的示例的其他要点与中的新语法有关。 我使用列表推导定义t,因为它在中有效(请参见下文) t是中的函数 现在,的行为类似于,但它适用于任意大小的值。后者不再存在。

  • 问题内容: 我的数据以以下格式存储(向下看):[-]表示空白单元格,右边可能只有10列(空格后)。像这样的东西: [string0] [-] [string1] [string2] [string3] .. [string10] [-] 如何为以下代码更改此代码: 1)仅获取[string0] 2)仅获取[string1] [string2] [string3] .. [string10] [-]