joy*_*joy 4 java collections iterator fail-fast
我得到了这个定义:正如名称所暗示的那样,一旦他们意识到自迭代开始以来已经改变了Collection的结构,那么失败快速迭代器就会失败.
迭代开始以来意味着什么?这意味着Iterator it = set.iterator()这行代码?
public static void customize(BufferedReader br) throws IOException{
Set<String> set=new HashSet<String>(); // Actual type parameter added
**Iterator it=set.iterator();**
Run Code Online (Sandbox Code Playgroud)
首先,它们是快速失败的,而不是故障安全的.
合同是某些类型的集合的结构修改(即插入/删除)使现有的迭代器无效.失败快速迭代器尝试检测它们不应该是有效的并抛出一个ConcurrentModificationException.这是为程序员提供的一项服务,可以帮助您更快地发现此类错误.
在你的例子中:
Iterator it = set.iterator();
it.next();
set.add("unique-entry"); // invalidates the iterator
it.next();
Run Code Online (Sandbox Code Playgroud)
如果你很幸运,第二个it.next()将检测无效使用并抛出异常.请注意,这是在尽力而为的基础上完成的,并不能保证.
| 归档时间: |
|
| 查看次数: |
3967 次 |
| 最近记录: |