Iterator
HadoopのReducerや、Androidアプリによく登場するIterator。いつも書き方を調べてしまうので自分用にまとめます。
例、
public void reduce ( Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter ) throws IOException { int sum = 0; while ( values.hasNext() ) { sum += values.next().get(); } output.collect(key, new IntWritable(sum)); }
Iteratorとは、Collectionの要素に順番にアクセスするための機能です。
hasNext()メソッドで次の要素があるか確認し、next()メソッドで取得します。
import java.util.*; public class Iterator { public static void main(String[] args) { HashMap map = new HashMap(); // オブジェクトの生成。 String[] tel = {"03", "075", "06", "052"}; //key String[] area = {"Tokyo", "Kyoto", "Osaka", "Nagoya"}; // value // HashMapにキーバリューを代入。 System.out.println("HashMap"); for ( int i = 0; i < 4; i++ ) { map.put(tel[i], area[i]); System.out.println("|" + tel[i] + "|" + area[i] + "|"); } // Iteratorを使って取り出す。 System.out.println("Iterator"); /* * Iterator"i"に * HashMap"map"の * キーバリューを保持したSetをentrySet()で取得して * iterator()によって反復しを * 代入する。 */ for ( java.util.Iterator i = map.entrySet().iterator(); i.hasNext(); ) { // java.utilを外すとなぜかエラーになる。 System.out.println("キーバリューのペア: " + i.next()); } } }
実行結果。HashMapの順に出てくるわけではないことに注意。
HashMap |03|Tokyo| |075|Kyoto| |06|Osaka| |052|Nagoya| Iterator キーバリューのペア: 075=Kyoto キーバリューのペア: 06=Osaka キーバリューのペア: 052=Nagoya キーバリューのペア: 03=Tokyo
Iterator
http://www.javaroad.jp/java_collection5.htm
http://www.geocities.jp/m_hiroi/java/abcjava09.html
Hadoop
http://xamry.wordpress.com/2012/09/11/your-first-hadoop-map-reduce-job/