获取迭代器的计数/长度/大小的最佳方法是什么?
有没有一种“计算”快速方法来获取迭代器的计数?
int i = 0;
for ( ; some_iterator.hasNext() ; ++i ) some_iterator.next();
...似乎是浪费CPU周期。
有没有一种“计算”快速方法来获取迭代器的计数?
int i = 0;
for ( ; some_iterator.hasNext() ; ++i ) some_iterator.next();
...似乎是浪费CPU周期。
如果你刚刚有了迭代器,那么这就是你必须做的 - 它不知道它有多少项目需要迭代,所以你不能查询它以获得该结果。有些实用方法似乎可以有效地做到这一点(例如在番石榴中),但在下面,它们只是消耗迭代器并随着它们的进行计数,与你的例子相同。Iterators.size()
但是,许多迭代器来自集合,您通常可以查询其大小。如果它是一个用户创建的类,你将获得迭代器,你可以考虑在该类上提供一个size()方法。
简而言之,在您只有迭代器的情况下,没有更好的方法,但通常您可以访问基础集合或对象,您可以从中直接获取大小。