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で取得できます。