以下の内容はhttps://uga-box.hatenablog.com/entry/2022/09/19/000000より取得しました。


【Java】ライブラリを使わず反復処理でインデックスを取得したい

JavaのVavrという関数型ライブラリを使っていたときに、反復処理でインデックスを使いたい場合はzipWithIndexというのを使っていた

uga-box.hatenablog.com

ただ、いまはVavrを使うのをやめており、使わないでインデックスが必要なときにどうするか調べた

このあたりが参考になった

www.baeldung.com

qiita.com

できれば、ライブラリを入れないでやるとすると、上のQiitaの記事で紹介されていた以下の方法がよさそう

public class With {
  public static <T> Consumer<T> Index(int start, ObjIntConsumer<T> consumer) {
    int counter[] = { start };
    return obj -> consumer.accept(obj, counter[0]++);
  }
}
java.util.stream.Stream.of("a", "b", "c", "d").forEach(With.Index(1, (s, i) -> System.out.println(i + ": " + s)));

ここで使われているObjIntConsumerはオブジェクト値とint値の引数を受け取って結果を返さないオペレーションで、consumer.acceptで実行する

docs.oracle.com

他参考

https://qiita.com/opengl-8080/items/22c4405a38127ed86a31




以上の内容はhttps://uga-box.hatenablog.com/entry/2022/09/19/000000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14