在精简器中的for循环中获取编译错误“只能迭代数组或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)"
上获得编译错误“只能迭代java.lang.Iterable的数组或实例”。如何在相同的地方使用循环? 最佳答案
试试这个。
for (IntWritable val : (Iterable<IntWritable>)() -> values) {
sum += val.get();
....
(Iterable<IntWritable>)() -> values
等效于 new Iterable<IntWritable>() {
@Override
public Iterator<IntWritable> iterator() {
return values;
}
};