smi*_*ith 1 java collections list arraylist
我创建了这个程序.
List<Integer> l = new ArrayList<>();
l.add(1);
l.add(5);
l.add(112);
Iterator i = l.iterator();
while(i.hasNext())
{
System.out.println(i.next());
}
Iterator ii = l.iterator();
while(ii.hasNext())
{
System.out.println(ii.next());
}
Run Code Online (Sandbox Code Playgroud)
我在调试时运行这个程序.
调试点已打开Iterator i = l.iterator(); .
此时,我通过进入eclipse中的变量选项卡在列表中添加了一个整数.
我补充说Integer.valueof(34);.
现在,当我完全运行该程序时,它会打印出来
1
5
112
1
5
112
Run Code Online (Sandbox Code Playgroud)
为什么第二个迭代器没有打印34.它也没有给我一个ConcurrentModificationException例外.
谢谢.
这听起来像你直接改变l.elementData[3]从null一个Integer.由于你直接 - 并且不一致 - 搞乱了班级的内部,因此不能保证继续按照合同行事.
在我的实现中,添加元素也需要更改l.size.故障快速机制依赖于l.modCount,需要递增.
换句话说,要ArrayList.add()手动模仿,您需要检查实现的源代码,并执行实际实现的所有步骤.
| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |