iterator属性

Iterator<E> iterator
重写

一个新的Iterator,可以迭代这个Iterable的元素。

可迭代的类可以指定其元素迭代顺序(例如,List总是按索引顺序迭代),或者可以不指定(例如,基于哈希的Set可能以任何顺序迭代)。

每次读取iterator时,它返回一个新的迭代器,可以用来再次遍历所有元素。相同可迭代的迭代器可以独立地遍历,只要底层集合没有改变,它们应该以相同的顺序返回相同的元素。

修改集合可能会导致新的迭代器产生不同的元素,并可能会改变现有元素的顺序。一个List精确地指定了其迭代顺序,因此修改列表会以可预测的方式更改迭代顺序。一个基于哈希的Set在向集合添加新元素时可能会完全更改其迭代顺序。

在创建新迭代器后修改底层集合可能会导致下一次调用该迭代器的Iterator.moveNext时出错。任何可修改的可迭代类都应该指定哪些操作会破坏迭代。

实现

Iterator<E> get iterator {
  // Note: NodeLists are not fixed size. And most probably length shouldn't
  // be cached in both iterator _and_ forEach method. For now caching it
  // for consistency.
  return new FixedSizeListIterator<E>(this);
}