【发布时间】:2012-07-20 21:19:51
【问题描述】:
我需要在 Java 中计算出 Iterable 中的元素数量。
我知道我可以做到:
Iterable values = ...
it = values.iterator();
while (it.hasNext()) {
it.next();
sum++;
}
我也可以这样做,因为我不再需要 Iterable 中的对象:
it = values.iterator();
while (it.hasNext()) {
it.remove();
sum++;
}
一个小规模的基准测试并没有显示出太大的性能差异,对于这个问题有什么 cmets 或其他想法吗?
【问题讨论】:
-
为什么?两者都是一个非常糟糕的主意,因为两者都是 O(N)。您应该尽量避免必须对集合进行两次迭代。
-
你的第二个甚至不应该工作。你不能在没有事先打电话给
next()的情况下打电话给remove()。