![]() |
1
41
通常,当您在循环访问集合时从集合中移除元素时,您将得到 Concurrent Modification Exception . 这就是为什么 Iterator 接口有一个remove()方法。使用迭代器是在遍历元素时修改元素集合的唯一安全方法。 代码应该是这样的:
这样您就可以安全地从setOfElementStoreMove()中删除所有生成删除集的元素。 编辑 根据对另一个答案的评论,这可能更符合您的要求:
|
![]() |
2
9
你可以使用google集合(而不是你自己无法做到的)并将谓词应用于 面具 那些你不需要的。
|
![]() |
3
6
任何涉及在迭代时从正在迭代的集合中移除的解决方案(但不是通过迭代器)都绝对不起作用。除了一个:你可以使用
你可以做的另一件事是建立一个
编辑:哎呀,我看彼得·尼克斯已经建议
|
![]() |
4
6
你可以试试
|
![]() |
5
2
有一个简单的答案-使用迭代器.remove()方法。 |
![]() |
6
2
如果您有足够的内存来存储一个副本,我假设您也有足够的内存来存储两个副本。你引用的卡夫卡式规则似乎并不禁止这一点。) 我的建议是:
所以copy保持不变,只提供循环使用的内容,而set则会被删除。同时从集合中删除的内容将被忽略。 |
![]() |
7
1
为什么不使用 iterator's remove method 在要删除的对象上? 迭代器的引入主要是因为枚举器在枚举时无法处理删除操作。 |
![]() |
8
0
你应该打电话
还要注意,大多数情况下
|
![]() |
9
0
可以实现
我认为标准实现(hashset、treeset等)不允许这样做,因为这意味着它们可以使用更有效的算法,但并不难做到。 下面是一个使用谷歌收藏的不完整示例:
注意:迭代器不支持
|
![]() |
10
0
抄袭 Java API :
我想我会指出,listirator是一种特殊的迭代器,它是为替换而构建的。 |
![]() |
tryingmybest09 · 设置出生日期排序不正确 2 年前 |
![]() |
David · 在c++中,将集合的向量创建为类成员会产生错误[重复] 7 年前 |
|
user5335342 · 对于带set的循环:key 7 年前 |
![]() |
Joan Pastor · C++基于参数更改设置的默认顺序 7 年前 |
![]() |
LucSpan · 让Python找到满足条件的两个整数 7 年前 |
![]() |
jsstuball · 与两次添加相同对象的Python集混淆 7 年前 |
|
user6822657 · 如何在集合中查找特定元素? 7 年前 |