<分区>
我正在编写 MR 作业。但是我遇到了与 Iterable 对象相关的问题。我需要找到它的大小。我将它转换为一个 List 对象,但那是错误的。(List 可以转换为 Iterable,但不能反转。)还有另一种方法,即为对象使用 Iterator 并为每个值递增一个计数器。但这不是最佳解决方案。谁能提出更好的方法?
请帮帮我。 提前致谢。
<分区>
我正在编写 MR 作业。但是我遇到了与 Iterable 对象相关的问题。我需要找到它的大小。我将它转换为一个 List 对象,但那是错误的。(List 可以转换为 Iterable,但不能反转。)还有另一种方法,即为对象使用 Iterator 并为每个值递增一个计数器。但这不是最佳解决方案。谁能提出更好的方法?
请帮帮我。 提前致谢。
最佳答案
Collection
接口(interface)提供了一个size()
方法,它扩展了Iterable
。如果您的迭代器恰好来自一个集合,您可以询问它的大小,否则您就不走运了,您只需迭代到最后即可。
这是一个实现这个的 hack:
public int size(Iterable<?> it) {
if (it instanceof Collection)
return ((Collection<?>)it).size();
// else iterate
int i = 0;
for (Object obj : it) i++;
return i;
}
关于java - 如何找到可迭代对象的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11412798/