1. 概要

このチュートリアルでは、範囲内の数値のシーケンスを一覧表示するさまざまな方法について説明します。

2. 範囲内の番号の一覧表示

2.1. 従来のforループ

従来のforループを使用して、指定した範囲の数値を生成できます。

public List<Integer> getNumbersInRange(int start, int end) {
    List<Integer> result = new ArrayList<>();
    for (int i = start; i < end; i++) {
        result.add(i);
    }
    return result;
}

上記のコードは、 start (包括的)から end (排他的)までの番号を含むリストを生成します。

2.2. JDK 8 IntStream.range

JDK8で導入されたIntStreamを使用すると、特定の範囲の数値を生成でき、forループの必要性が軽減されます。

public List<Integer> getNumbersUsingIntStreamRange(int start, int end) {
    return IntStream.range(start, end)
      .boxed()
      .collect(Collectors.toList());
}

2.3. IntStream.rangeClosed

前のセクションでは、endは排他的です。 end を含む範囲の数値を取得するには、IntStream.rangeClosedがあります。

public List<Integer> getNumbersUsingIntStreamRangeClosed(int start, int end) {
    return IntStream.rangeClosed(start, end)
      .boxed()
      .collect(Collectors.toList());
}

2.4. IntStream.iterate

前のセクションでは、範囲を使用して一連の数値を取得しました。 シーケンス内に必要な数がわかっている場合は、IntStream.iterateを利用できます。

public List<Integer> getNumbersUsingIntStreamIterate(int start, int limit) {
    return IntStream.iterate(start, i -> i + 1)
      .limit(limit)
      .boxed()
      .collect(Collectors.toList());
}

ここで、 limit パラメーターは、反復する要素の数を制限します。

3. 結論

この記事では、範囲内で数値を生成するさまざまな方法を見てきました。

コードスニペットは、いつものように、GitHubにあります。