Javaでiterator(イテレータ)を使う方法【初心者向け】
初心者向けにJavaでIteratorを使う方法について解説しています。ループ処理において便利なインターフェースですので、覚えておくと現場で役立ちます。実際にソースコードを書いて説明しているので、ぜひ理解しておきましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
この記事では、Javaでiterator(イテレータ)を使う方法について解説しています。
実際にプログラムを書いて説明しているので、ぜひ理解しておきましょう。
そもそもJavaについてよく分からないという方は、Javaとは何なのか解説した記事を読むとさらに理解が深まります。
なお本記事は、TechAcademyのオンラインブートキャンプJava講座の内容をもとに作成しています。

今回は、Javaに関する内容だね!

どういう内容でしょうか?

iteratorの使い方について詳しく説明していくね!

お願いします!
イテレータとは
イテレータは、集合の要素に順番にアクセスする時に使用するインターフェースです。
集合にはリスト、セット、マップなど複数の種別がありますが、イテレータはそれらにアクセスするための、共通の仕組みを提供します。
イテレータを用いることで、個別の実装を意識せずに、要素へのアクセスを自然に記述できます。
イテレータの書き方
既存のクラスからイテレータを得る
Iterableインターフェースを実装するクラスのiteratorメソッドを呼び出すと、イテレータを得られます。
(例)ArrayList, HashSet, LinkedList, TreeSet
ArrayList list = new ArrayList(); Iterator iterator = list.iterator();
自作のクラスでイテレータを実装する
Iteratorインターフェースを実装クラスでは以下2つのメソッドを実装しなければなりません。
- hasNextメソッド: 次の要素があればtrue、なければfalseを返します。
- nextメソッド: 次の要素を返します。
class MyClass implements Iterator{
public boolean hasNext() {
// 略
}
public Object next() {
// 略
}
}
実際に書いてみよう
ArrayList、HashSetを用いて、イテレータの動作を確認してみます。
どちらのクラスもiteratorメソッドを呼び出すとイテレータを得られます。
ソースコード
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
public class IteratorDemo {
public static void main(String[] args) {
// リストを作成する
List<String> list = new ArrayList<>();
list.add("alpha");
list.add("bravo");
list.add("charlie");
// イテレータを取得し、メソッドを呼び出す
printIterable(list.iterator());
System.out.println("-----");
// セットを作成する
Set<String> set = new HashSet<>();
set.add("delta");
set.add("echo");
set.add("foxtrot");
// イテレータを取得し、メソッドを呼び出す
printIterable(set.iterator());
}
private static void printIterable(Iterator<String> iterator) {
while (iterator.hasNext()) {
String s = iterator.next();
System.out.println(s);
}
}
}
実行結果
alpha bravo charlie ----- foxtrot delta echo
解説
まず、ArrayListを作成し、要素を代入します。
iteratorメソッドを呼び出しイテレータを得ます。
自作したprintIterableメソッドの引数に、イテレータを設定します。
printIterableメソッドの中では、引数で受け取ったイテレータのhasNextメソッドを呼び出してwhile文の条件として設定します。
hasNextメソッドは次の要素があればtrue、なければfalseを返すことによりイテレータの要素を全て取得するまで繰り返されます。
while文の中では、イテレータのnextメソッドを呼び出すことによりイテレータの要素を変数に代入し、出力させています。
同様にHashSetを作成し、要素を代入します。HashSetもiteratorメソッドでイテレータを得られるので、printIterableメソッドを適用することでHashSetの全ての要素を出力させることができました。
入門向けJavaの学習サイトもまとめているので、合わせてご覧ください。

内容分かりやすくて良かったです!

ゆかりちゃんも分からないことがあったら質問してね!

分かりました。ありがとうございます!
TechAcademyでは、初心者でもJavaやServletの技術を使ってWebアプリケーション開発を習得できるオンラインブートキャンプJava講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。