1. ホーム
  2. java

[解決済み] Java 8 forEach with index [重複]について

2022-03-07 12:06:25

質問

を構築する方法はあるのでしょうか? forEach メソッドは、Java 8 でインデックスを使用して反復処理することができますか?理想を言えば、こんな感じです。

params.forEach((idx, e) -> query.bind(idx, e));

今の私にできることは

int idx = 0;
params.forEach(e -> {
  query.bind(idx, e);
  idx++;
});

解決方法は?

インデックス可能なコレクション(リストなど)に対して反復処理をしているのですから、あとは要素のインデックスで反復処理すればよいのではないでしょうか。

IntStream.range(0, params.size())
  .forEach(idx ->
    query.bind(
      idx,
      params.get(idx)
    )
  )
;

このコードは,古典的なi++スタイルのforループでリストを反復処理するのと似ていますが,より簡単に並列化できます(もちろん,paramsへの同時読み取り専用アクセスが安全であると仮定してのことです).