java - 在 reducer 的 for 循环中获取编译错误 "Can only iterate over an array or an instance of java.lang.Iterable"

标签 java arrays hadoop mapreduce iterator

在 reducer 的 for 循环中出现编译错误“Can only iterate over an array or an instance of java.lang.Iterable”。

public void reduce(Text key, Iterator<IntWritable> values,
            OutputCollector<Text, IntWritable> Output, Reporter arg3)
            throws IOException {
        // TODO Auto-generated method stub

        int sum = 0;
         for (IntWritable val : values) {
           sum += val.get();

在上面的代码中,在 “for (IntWritable val : values)” 处出现编译错误“Can only iterate over an array or an instance of java.lang.Iterable”。如何使用循环?

最佳答案

或者传递一个 Iterable<IntWritable>而不是 Iterator<IntWritable>方法,或使用 hasNext()next()遍历 Iterator 的元素:

 while (values.hasNext()) {
    IntWritable val = values.next();
    ...
}

关于java - 在 reducer 的 for 循环中获取编译错误 "Can only iterate over an array or an instance of java.lang.Iterable",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36078389/

相关文章:

java - 具有多种 key 类型的Hadoop MapReduce映射器和精简器

hadoop - 当映射器在 EMR 流式处理作业中死亡时会发生什么?

java - libgdx box2d,以一定角度创建时纹理/主体不在正确位置

javascript - 计算每行Jquery中的输入数组

hadoop - 读取配置单元中的嵌套标记xml文件

javascript - 如何将相同的元素添加到javascript数组n次

C# params object[] 奇怪的行为

java - Android MediaPlayer 不显示视频,只播放视频文件的音频

java - 当文件有多个空格时如何计算文件中的字数? - java

java - 如何使用可变参数将任意数量的相同类型参数传递给方法?