迭代器模式
Posted zhangjin1120
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迭代器模式相关的知识,希望对你有一定的参考价值。
-
在23种设计模式中,行为型模式一共有11种,其中迭代器模式是行为型模式的第4种。
-
迭代器模式(Iterator Pattern)有叫做
游标(Cursor)
。 -
迭代器模式在jdk中,
List.java
Collection.java
接口里,都有抽象方法:Iterator<E> iterator();
-
迭代器的作用
- 普通的fori循环, 只能遍历List,不能遍历Set。foreach循环中,不能对List做删除,会触发
ConcurrentModificationException
。所以对Set的遍历删除操作,只能用迭代器。
下面是触发异常的代码:
List<Integer> numbers = new ArrayList<Integer>(Arrays.asList(1,2,3,4,5)); for(Integer n : numbers) { if(n == 2) numbers.remove(2); } System.out.println(numbers);
Exception in thread "main" java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909) at java.util.ArrayList$Itr.next(ArrayList.java:859) at list.ListDeleteTest2.main(ListDeleteTest2.java:10)
- 普通的fori循环,如果在循环内部做删除操作,易出错,且危险。这一点,可以参考ArrayList删除数据的正确写法。
- 普通的fori循环, 只能遍历List,不能遍历Set。foreach循环中,不能对List做删除,会触发
参考:
Iterator vs for
java 中删除list元素的四种方法(remove)
Difference between java iterator and for each
深入理解HashSet(底层是HashMap)
以上是关于迭代器模式的主要内容,如果未能解决你的问题,请参考以下文章