TheOldDriver
11/16/2017 - 1:29 PM

集合相关

集合相关接口关系

    看一下JDK中的集合类,比如List一族或者Set一族,都是继承了Iterable接口,但并不直接继承Iterator接口。仔细想一下这么做是有道理的。因为Iterator接口的核心方法next()或者hasNext()是依赖于迭代器的当前
    迭代位置的。 如果Collection直接继承Iterator接口,势必导致集合对象中包含当前迭代位置的数据(指针)。  当集合在不同方法间被传递时,由于当前迭代位置不可预置,那么next()方法的结果会变成不可预知。
    除非再为Iterator接口添加一个reset()方法,用来重置当前迭代位置。但即时这样,Collection也只能同时存在一个当前迭代位置。而Iterable则不然,每次调用都会返回一个从头开始计数的迭代器。
    多个迭代器是互不干扰的。