为什么迭代器没有任何重置方法?

Ole*_*ndr 31 java collections iterator

为什么?什么是将迭代器项目指针移动到第一个位置的最佳方法?

DJC*_*rth 34

为什么?

因为如果你强制迭代器有一个reset方法,每个迭代器都必须有一个reset方法.这为每个迭代器编写者提供了额外的工作.另外一些迭代器很难重置(或者非常昂贵),你不希望用户调用它们的重置.文件或流的迭代器就是很好的例子.

将迭代器项指针移动到第一个位置的最佳方法是什么?

创建一个新的迭代器.它很少比重置更昂贵.

  • (除了事实上有一个`remove`方法,*实际上并没有真正给所有迭代器"额外的工作",因为操作是可选的.) (6认同)
  • @DJClayworth"这给了每个迭代者作家额外的工作." 这不是一个合理的回应.图书馆实施者需要做一些额外的努力,但收益是许多图书馆用户将获得好处. (2认同)
  • 更重要的是第二点,即一些迭代器无法重置. (2认同)

duf*_*ymo 6

读取流后,如果不再次打开源,则无法重新读取.这就是流和迭代器的工作方式.