Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在创建迭代器后,未使用重复元素获取ConcurrentModificationException_Java - Fatal编程技术网

Java 在创建迭代器后,未使用重复元素获取ConcurrentModificationException

Java 在创建迭代器后,未使用重复元素获取ConcurrentModificationException,java,Java,我是java新手,对Hashset有疑问 如果我们在创建迭代器后添加了重复的元素,有人能解释一下为什么我们不能得到ConcurrentModificationException吗。无论如何,我们正在改变它的结构,即使添加了重复的元素,它也应该抛出异常。 有人能澄清我的疑问吗?添加重复元素不会修改集合,因为集合按定义只包含每个元素中的一个。javadoc中对此进行了说明: 如果指定的元素尚未存在,则将其添加到此集合。更正式地说,如果这个集合不包含元素e2,那么将指定的元素e添加到这个集合中,使得e

我是java新手,对Hashset有疑问

如果我们在创建迭代器后添加了重复的元素,有人能解释一下为什么我们不能得到ConcurrentModificationException吗。无论如何,我们正在改变它的结构,即使添加了重复的元素,它也应该抛出异常。
有人能澄清我的疑问吗?

添加重复元素不会修改集合,因为集合按定义只包含每个元素中的一个。javadoc中对此进行了说明:

如果指定的元素尚未存在,则将其添加到此集合。更正式地说,如果这个集合不包含元素e2,那么将指定的元素e添加到这个集合中,使得e==null?e2==null:e.equals2。如果此集合已经包含元素,则调用将保持集合不变并返回false


添加重复元素不会修改集合,因为集合按定义仅包含每个元素中的一个。javadoc中对此进行了说明:

如果指定的元素尚未存在,则将其添加到此集合。更正式地说,如果这个集合不包含元素e2,那么将指定的元素e添加到这个集合中,使得e==null?e2==null:e.equals2。如果此集合已经包含元素,则调用将保持集合不变并返回false

从:

此类的迭代器和listIterator返回的迭代器 方法是快速失败的:如果列表在任何时候进行了结构修改 创建迭代器后的时间,以任何方式,除了通过 迭代器自己的remove或add方法,迭代器将抛出 ConcurrentModificationException。因此,面对同时发生的冲突, 修改后,迭代器会快速、干净地失败,而不是 在不确定的时间冒任意、不确定行为的风险 将来

请注意,无法保证迭代器的快速失败行为 一般来说,不可能作出任何硬性保证 在存在非同步并发修改的情况下。快速失败 迭代器尽最大努力抛出ConcurrentModificationException 原因因此,编写依赖于 关于其正确性的例外:的fail fast行为 迭代器只能用于检测bug

从:

此类的迭代器和listIterator返回的迭代器 方法是快速失败的:如果列表在任何时候进行了结构修改 创建迭代器后的时间,以任何方式,除了通过 迭代器自己的remove或add方法,迭代器将抛出 ConcurrentModificationException。因此,面对同时发生的冲突, 修改后,迭代器会快速、干净地失败,而不是 在不确定的时间冒任意、不确定行为的风险 将来

请注意,无法保证迭代器的快速失败行为 一般来说,不可能作出任何硬性保证 在存在非同步并发修改的情况下。快速失败 迭代器尽最大努力抛出ConcurrentModificationException 原因因此,编写依赖于 关于其正确性的例外:的fail fast行为 迭代器只能用于检测bug


“按定义设置”仅包含唯一的对象。添加操作分为两个过程:首先检查对象是否已存在于集合中,然后添加它(如果不存在)


当我们要添加到集合中的项已经存在时,将不会更改任何内容,因此无法发生异常

定义集仅包含唯一的对象。添加操作分为两个过程:首先检查对象是否已存在于集合中,然后添加它(如果不存在)


当我们要添加到集合中的项已经存在时,将不会更改任何内容,因此无法发生异常

你能举一个例子吗?请封面好好了解它的内在生活!当您向hashset添加duplicate时,不会发生任何事情,您的新元素不会被添加!你能举一个例子吗?请封面好好了解它的内在生活!当您向hashset添加duplicate时,不会发生任何事情,您的新元素不会被添加!