0

我正在写一个 MR 工作,在减速器方面,我需要在做任何事情之前检查 Iterable 的大小。很久以前有人确实问过同样的问题(如何找到可迭代对象的大小?),但给出的解决方案不起作用。由于可迭代对象没有 size() 方法,请建议我该怎么做。我尝试了以下选项。

  1. 试图从可迭代对象中获取迭代器对象,但出现以下类型转换错误。与 ResettableIterator 相同的错误。java.lang.ClassCastException: org.apache.hadoop.mapreduce.ReduceContext$ValueIterator cannot be cast to java.util.ListIterator

  2. 如果我迭代到 Iterable 对象的末尾以获取大小,那么我该如何回到索引的开头。

  3. if(values instanceof Collection){ return ((Collection)values).size(); } 由于值的类型不同,因此不会受到影响。

请帮我一些示例代码。这个问题确实花了很多时间。非常感谢。!!

4

1 回答 1

0
  1. Iterator iterator = Use values.iterator();获取迭代器。
  2. 将值存储在List或其他一些数据结构中,然后对其进行迭代。
于 2013-07-15T10:39:26.133 回答