如果我们在 HashSet 的 oracle 文档中看到,它指出在迭代整个 Set 时,如果我们尝试操作它,它会抛出 ConcurrentModificationException。这是可以理解的。
这与 ArrayList 或 HashMap 的情况类似。但如果我们看到,Java 提供了替代类,例如 CopyOnWriteArrayList 和 ConcurrentHashMap。
为什么 HashSet 没有这样的类来处理 ConcurrentModificationException?或者即使它存在,也请引起我的注意。我不知道有这样的类(class)
最佳答案
如果您想要一个“ConcurrentHashSet”,其行为与 ConcurrentHashMap 相同,您可以使用 Collections.newSetFromMap()
并传递一个 ConcurrentHashMap 作为参数。
还有其他并发Set
实现:例如ConcurrentSkipListSet
、CopyOnWriteArraySet
。
关于java - Java为HashSet中的ConcurrentModificationException提供的类是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32394986/