liujia5276 2012-04-14 10:52
浏览 281
已采纳

关于iterator的的问题。

[code="java"]import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;

public class TestIteratorError {
public static void main(String[] args){
Collection books= new HashSet();
books.add("dafad");
books.add("adfadfw");
books.add("wefrqsdf");
Iterator it =books.iterator();
while(it.hasNext()){
String book= (String)it.next();
System.out.println(book);
if(book.equals("adfadfw")){
books.remove(book);//使用iterator迭代的过程中,不可修改集合元素,这是会引发异常的。
}
}
}
}[/code]
代码如上所示,
当我执行这段程序时,并没有报错,这是怎么回事,
但是我把字符串替换成第一个和第三个元素就会报错。

  • 写回答

1条回答 默认 最新

  • qq415241704 2012-04-14 11:17
    关注

    因为在你对一个hashset遍历的时候是不能对集合进行remove操作的 hashset会对放进来的对象进行排序,然后添加进集合,你的adfadfw按照unicode编码来说正好排在集合的最后面,就是已经编历完了所以不会出错,而前面的两个都没遍历玩就会出错,你换成1 2 3试一试 就可以知道为什么会出错了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog