在Java中,使用foreach循环遍历集合时,对集合调用remove是合法的吗?例如:
List<String> names = ....
for (String name : names) {
// Do something
names.remove(name).
}
作为附录,删除尚未迭代的项是否合法?例如,
//Assume that the names list as duplicate entries
List<String> names = ....
for (String name : names) {
// Do something
while (names.remove(name));
}
为了在迭代集合时安全地从集合中删除,你应该使用迭代器。
例如:
List<String> names = ....
Iterator<String> i = names.iterator();
while (i.hasNext()) {
String s = i.next(); // must be called before you can call i.remove()
// Do something
i.remove();
}
从Java文档:
此类的迭代器和listIterator
方法返回的迭代器是快速失败的:如果在创建迭代器之后的任何时间以任何方式对列表进行结构修改,则除了通过迭代器自己的remove或add方法之外,迭代器都会抛出ConcurrentModificationException
。因此,面对并发修改,迭代器会快速干净地失败,而不会在未来的不确定时间内冒任意,不确定的行为的风险。
对于许多新手来说,也许不清楚的是,使用for / foreach构造对列表进行迭代会隐式创建一个迭代器,该迭代器必然无法访问。该信息可以在这里找到
问题内容: 我本来打算通过 在。有几点我不了解。 迭代器函数的用途是什么?没有它,还有什么办法吗? 如下所示,键和值的意义是什么? PS: 我试图在不带参数的情况下运行此函数,但它不起作用。 这是我的: 我的档案: 另一个问题 :如果在控制台中出现条件并显示“ username is thomas”,为什么上面的功能没有打开? 问题答案: 问题1和2 因此,基本上,第一个参数是要迭代的对象。它可以
问题内容: 在循环中使用/ 是否有任何问题?我试图遍历文件数组和每个文件的内容。 这段代码确实有效,但是这可能会出问题吗?我让某人告诉我,您不应该在这样的高阶函数中使用/ ,所以我只是想问一下这是否有问题。 问题答案: 确保代码确实有效,但是我很确定它不会执行您期望的功能。它只会触发多个异步调用,但此后函数会立即返回。 顺序阅读 如果要顺序读取文件, 则不能使用。只需使用现代循环即可,该循环将按预
我使用的php foreach语句如下所示:
我尝试将一个循环转换为一个循环在flutter中等待循环。我想要循环的元素是Firebase实时数据库中的快照。 我的函数如下所示: 我尝试了不同的方法,但是我没有让函数工作。 第一次尝试: 错误: 未处理的异常:键入'_InternalLinkedHashMap 第二次尝试: 错误: 未处理的异常:键入'_InternalLinkedHashMap 在所有的尝试中,我都得到了相同的错误。但是上述
问题内容: 我正在尝试编译以下代码: 我在for行中看到一条错误消息: 该方法返回一个(但在这种情况下,返回的结构)。 是我为应用程序创建的枚举(在另一个类文件-中)。 当我在中创建具有相同结构的foreach循环时,我没有遇到此问题。 我究竟做错了什么? 问题答案: 一种更有效的方法: 如果有可能,请定义“ getData”,以便您不需要强制转换。
值5=5 值6=6 值7=7 结果lopping1=6 结果lopping2=15 结果lopping3=24 我该怎么办?