lamda式でindex付for loopを実装する方法【Java】

java8以降で使用可能となったlamda(ラムダ)式のforeachでは、通常indexを取得することはできませんが、一工夫するとindexを使用してリストの値を参照することが可能です。

IntStream.rangeを利用する

IntStream.rangeは、指定した数値の範囲で繰り返し処理を行うことが可能です。

例えば、以下のように指定すると

IntStream.range(0, 10)

0~9までのstreamが返されます。

lamda式でindex付for loopを実装する方法

続けてforeachを記述すると、返却されたIntStreamからindexとなる数値を取り出しながら、処理を行えます。

IntStream.range(x, y).foreach(index -> ~処理~);

例えば、値が格納されたリスト分だけloopする場合は

List<String> list = new ArrayList<String>();
list.add("みかん");
list.add("もも");
list.add("りんご");

IntStream.range(0, list.size()).foreach(index -> System.out.println(list.get(index)));

と記述すると、リストの中身をindexで取得できます。

java
この記事を書いた人

エンジニアとして仕事をしています。
仕事や趣味を通して、開発やプログラミングについて学んだことを綴っていきます。
 ・実務経験は、WEBシステムのサーバーサイドコーディングがメイン
 ・アプリ開発は趣味程度

akihiro-takedaをフォローする
akihiro-takedaをフォローする
プログラミング・開発の備忘録
タイトルとURLをコピーしました