在reducer中的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();
在上面的代码中,获取编译错误“只能迭代java.lang.iterable的数组或示例” "for (IntWritable val : values)"
. 如何使用相同的循环?
3条答案
按热度按时间pw136qt21#
试试这个。
new Iterable() {
jrcvhitl2#
要么通过
Iterable<IntWritable>
而不是Iterator<IntWritable>
方法,或使用hasNext()
以及next()
迭代Iterator
:bvjveswy3#
迭代器通常指向集合中的单个示例。所以呢
for (IntWritable val : values)
无效。使用
Iterable
相反。通过Iterable<IntWritable>
在你的职责范围内。