Javaで独自のIteratorを作成する
乱数を10個生成するイテレータを作成します。
イテレータはjava.util.Iteratorインタフェースをimplementする必要があります。
オーバーライドするメソッドは2つです。
- hasNext()
- next()
MyIteratorクラスを作成します。実装は以下です。
package jp.co.confrage; import java.util.Iterator; public class MyIterator implements Iterator<Integer> { int size = 10; int cur = 0; @Override public boolean hasNext() { return cur != size; } @Override public Integer next() { cur++; return (int) (Math.random() * 1000); } }
このイテレータを使用してループします。
package jp.co.confrage; import java.util.Iterator; public class MyIteratorSample { public static void main(String[] args) { final Iterator<Integer> itr = new MyIterator(); while (itr.hasNext()) { System.out.println(itr.next()); } } }
結果は以下のようになります。
107 989 210 905 372 277 284 499 672 832
Streamでループ
Java8以降ならStreamを使用してループします。
package jp.co.confrage; import java.util.Spliterator; import java.util.Spliterators; import java.util.stream.Stream; import java.util.stream.StreamSupport; public class MyIteratorSample { public static void main(String[] args) { final MyIterator itr = new MyIterator(); final Spliterator<Integer> spliterator = Spliterators.spliteratorUnknownSize(itr, Spliterator.NONNULL); final Stream<Integer> stream = StreamSupport.stream(spliterator, true); stream.forEach(System.out::println); } }
結果は乱数が10個標準出力されます。

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
資格:少額短期保険募集人,FP3級,宅建士
コメント