我正在写一个 MR 工作,在减速器方面,我需要在做任何事情之前检查 Iterable 的大小。很久以前有人确实问过同样的问题(如何找到可迭代对象的大小?),但给出的解决方案不起作用。由于可迭代对象没有 size() 方法,请建议我该怎么做。我尝试了以下选项。
试图从可迭代对象中获取迭代器对象,但出现以下类型转换错误。与 ResettableIterator 相同的错误。
java.lang.ClassCastException: org.apache.hadoop.mapreduce.ReduceContext$ValueIterator cannot be cast to java.util.ListIterator
如果我迭代到 Iterable 对象的末尾以获取大小,那么我该如何回到索引的开头。
if(values instanceof Collection){ return ((Collection)values).size(); }
由于值的类型不同,因此不会受到影响。
请帮我一些示例代码。这个问题确实花了很多时间。非常感谢。!!