java - 如何找到可迭代对象的大小?

标签 java 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/

相关文章:

java - 在 Java 中对单个字符串数组中的逗号分隔数字进行排序

c++ - 为什么 const_iterator 不像 reverse_iterator 那样提供基类?

jquery - JQuery 中的迭代

c++ - 将指针转换为迭代器

c++ - 输出迭代器适配器计数但不复制

java - 提取 GWT 服务的结果

java - jfilechooser - 将目录设置为文件中的路径

java - Retrofit : NPE , 尝试在空对象引用上调用接口(interface)方法(仅限发行版)

java - 如果 JComboBox 是可编辑的,如何将输入的字符串转换为对象?

java - 倒带迭代器