`

五十三:Java对迭代子模式的支持

阅读更多
Java对迭代子模式的支持来自于Java聚集的需要:一个聚集需要向外界提供遍历聚集元素的方法.
Java聚集是一个庞大的家庭,大体上可以分成三种:Map,List,Set,而每一种都只有非常有限的几种实现而已.Java聚集的共同之处是它们都(直接)实现了java.util .Conllection接口.
对于List聚集对象来说,聚集元素的顺序是很重要的,而对于Set聚集来说,它并不保持元素的顺序,而且它里面的元素必须是惟一的,因此每个Set聚集对象都提供衡量两个元素是否相同的方法,而Map聚集存储键-值对.

一:Java聚集中的迭代子

(A)Java聚集接口java.util.Collection是java.util库中所有的聚集类都要实现的接口,作为Collection类型的子类型,java.util.List是java.util库中所有的List类型都必须实现的接口.
(1)Iterator与ListIterator接口
Colection接口有一个方法iterator(),返回一个java.util.Iterator类型,而java.util.List接口的listIterator()方法返回一个java.util.ListIterator类型,这两个类型构成Java语言对迭代子模式的支持.
(2)java.util.Iterator接口
(3)java迭代子接口ListIterator
java.util.ListIterator是接口java.util.Iterator的扩展接口,可以与序的聚集或者列list一同使用.这里要注意的是:只能调用一次next或者previous之后,调用一次remove。如果需要再次调用remove的话,就需要再次调用next或者previous...
(4)怎么实现ListIterator接口
Java语言中的AbstractList,AbstractSequentialList,LinkedList以及List等列提供的listIterator方法返回一个ListIterator对象,以AbstractList为例,这个类通过一个内部子类ListItr实现了ListIterator接口,当listIrerator方法被调用时,会返回一个内部类的实例,AbstractList的内部成员类ListItr实现了ListIrerator接口(5)Fail Fast
尽管AbstractList.ListItr迭代子类允许客户端在迭代过程中通过迭代子对象增加和删除聚聚元素,但是不通过迭代子就直接对聚集元素进行修改仍然会造成迭代失败,为了避免迭代因外界的直接修改而崩溃,AbstractList.ListItr迭代子必须实现Fail Fast功能。从ListItr类的源代码中可以看到,在previous,set,add方法中均调用checkForComodification方法检查聚集的内容是否刚刚被外界修改过,如果在迭代开始后聚集的内容被外界直接修改过(不是通过迭代子自己提供的add,remove等方法的话),会抛出ConcurrentModificationException异常.这就是说,AbstractList.ListItr迭代子是具有Fail Fast功能的迭代子。

(B)Enumeration与Iterator
这个在早版本中会用到,在此略过
分享到:
评论

相关推荐

    java常用23中设计模式

    行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。

    Java23种设计模式可直接运行Demo

    行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。

    23种设计模式java源码

    行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。

    Java设计模式

    行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式

    java后端开发+java23种设计模式学习demo

    里面包含常规算法学习demo; 设计模式的分类 ...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    java设计模式示例

    java设计模式示例 创建型模式(5种):工厂方法模式,...行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    java迭代子模式详解

    主要为大家详细介绍了java迭代子模式的相关资料,需要的朋友可以参考下

    java种设计模式详解

    行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。

    Java 之23种设计模式解析

    java之23中常用设计模式详解 总体来说设计模式分为三...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    23种设计模式_Java实现

    java的设计模式大体上分为三大类: ...行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    23种JAVA设计模式和15种J2EE设计模式

    行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。

    java设计模式demo实现

    包含创建型模式,共五种:工厂方法模式、抽象...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式的demo实现

    AspectJ实现设计模式(五)—迭代子模式

    <Java>>书中关于迭代子模式的示例。图1——例子系统UML图例子系统首先定义一个抽象的购物筐类Purchase,以便给出所有的具体购物筐的行为和需要实现的方法。购物筐PurchaseOfCopA和PurchaseOfCopB继承自Purchase,...

    基于Java实现的23种设计模式Demo,抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式、外观模式、适配器模式等

    Java设计模式共有23种,分别为:抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式、外观模式、适配器模式、桥接模式、组合模式、装饰模式、享元模式、代理模式、命令模式、解释器模式、访问者模式、迭代子...

    23种Java设计模式

    总体来说设计模式分为三大类: 创建型模式,共五种:...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    Java 设计模式

    行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 设计模式遵循的原则有6个: 1、开闭原则(Open Close ...

    Java与模式 学习

    Java与模式:迭代子(Iterator)模式、合成(Composite)模式、抽象工厂模式等

    java设计模式

    总体来说设计模式分为三大类: ...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    JavaStudy:Java 学习记录

    JavaStudy 多线程 类加载&反射 设计模式: ... 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    Java面试 java设计模式整理 单例、工厂、策略等 面试使用,学习使用

    java的设计模式大体上分为三大...16、迭代子模式(Iterator) 16 17、责任链模式(Chain of Responsibility) 18 18、命令模式(Command) 19 19、备忘录模式(Memento) 21 20、状态模式(State) 23 21、访问者模式等

Global site tag (gtag.js) - Google Analytics