循环时不可以修改集合元素

来源:互联网 发布:java是操作系统吗 编辑:程序博客网 时间:2024/05/21 02:33
public class IteratorTest{public static void main(String[] args){// 创建集合、添加元素的代码与前一个程序相同Collection books = new HashSet();books.add("轻量级Java EE企业应用实战");books.add("疯狂Java讲义");books.add("疯狂Android讲义");// 获取books集合对应的迭代器Iterator it = books.iterator();while(it.hasNext()){// it.next()方法返回的数据类型是Object类型,因此需要强制类型转换String book = (String)it.next();System.out.println(book);if (book.equals("疯狂Java讲义")){// 从集合中删除上一次next方法返回的元素it.remove();}// 对book变量赋值,不会改变集合元素本身book = "测试字符串";   //①}System.out.println(books);}}


public class IteratorErrorTest{public static void main(String[] args){// 创建集合、添加元素的代码与前一个程序相同Collection books = new HashSet();books.add("轻量级Java EE企业应用实战");books.add("疯狂Java讲义");books.add("疯狂Android讲义");// 获取books集合对应的迭代器Iterator it = books.iterator();while(it.hasNext()){String book = (String)it.next();System.out.println(book);if (book.equals("疯狂Android讲义")){// 使用Iterator迭代过程中,不可修改集合元素,下面代码引发异常books.remove(book);}}}}


1.使用Iterator迭代集合时,不是把集合元素本身传递给Iterator,而是把集合元素的值传递给Iterator

2.使用Iterator迭代过程中,不可修改集合元素。使用for,for-each循环时也不可以修改集合元素


1.for-each和foreach方法都是基于Iterator接口

2.stream可以看作Iterator的高级版本

3.iterator和stream,for循环等在操作时都不可以修改集合元素,也就是说使用流式操作修改集合元素是不允许的,可以通过生成新集合方式修改集合元素



0 0