【问题标题】:Resetting Iterable Object重置可迭代对象
【发布时间】:2013-07-13 01:46:55
【问题描述】:

我正在编写一个 MR 工作,在减速器方面,我需要在做任何事情之前检查 Iterable 的大小。很久以前有人确实问过同样的问题(How to find the size of an Iterable Object?),但给出的解决方案不起作用。由于 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(); } 这不会受到影响,因为值的类型不同。

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

【问题讨论】:

    标签: mapreduce iterable


    【解决方案1】:
    1. Iterator iterator = Use values.iterator(); 获取迭代器。
    2. 将值存储在List 或其他一些数据结构中,然后对其进行迭代。

    【讨论】:

      猜你喜欢
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      • 2018-09-20
      • 2015-10-23
      • 2018-11-26
      • 2018-01-23
      • 1970-01-01
      • 2015-11-28
      相关资源
      最近更新 更多