黑马程序员技术交流社区

标题: 使用Iterator接口佚代集合过程改变集合元素不会引发异常? [打印本页]

作者: 归☆夜↑『    时间: 2013-6-6 17:40
标题: 使用Iterator接口佚代集合过程改变集合元素不会引发异常?
话说使用Iterator接口佚代集合时是不能改变的集合的元素的,可是今天做小测试时怎么就有例外的情况了 ,请大家指教
  1. package collection;
  2. import java.util.*;

  3. public class IteratorErrorTest {

  4. public static void main(String[] args) {
  5. Collection books = new HashSet();
  6. books.add("hello");
  7. books.add("Java");
  8. books.add("疯狂讲义");
  9. Iterator it = books.iterator();
  10. while(it.hasNext()) {
  11. String s =(String)it.next();
  12. System.out.println(s);
  13. if(s.equals("Java")) {
  14. books.remove(s);//此处没有引发异常??
  15. }
  16. }
  17. System.out.println(books);
  18. }

  19. }
复制代码

作者: 梦想蓝色天空    时间: 2013-6-6 20:54
你在迭带里面做的books.remove(s);这个操作和 把他放到迭带器外面books.remove("hello");这两个方法没有什么区别吧,你都是在对books对象进行操作。
放到迭代器里面的作用最多就是通过迭带比较一下当前迭带的值与("Java")做了一下比较,你只是把这个方法放到迭带器里面执行,但迭带器对象本身并未对Books进行过更改。

作者: 归☆夜↑『    时间: 2013-6-6 21:31
梦想蓝色天空 发表于 2013-6-6 20:54
你在迭带里面做的books.remove(s);这个操作和 把他放到迭带器外面books.remove("hello");这两个方法没有什 ...

佚代过程允除了佚代器外允许对集合元素进行操作??
作者: 梦想蓝色天空    时间: 2013-6-6 21:45
归☆夜↑『 发表于 2013-6-6 21:31
佚代过程允除了佚代器外允许对集合元素进行操作??

可以的呀。。迭带过程就是while循环每次从迭带器里面取一个元素。迭带过程实际上就是while循环过程。。。在while循环里面当然可以对外边集合做操作了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2