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講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。