Рубрики
Без рубрики

Перечисление номеров в диапазоне в Java

Исследуйте различные способы генерации чисел в пределах диапазона в Java.

Автор оригинала: baeldung.

1. Обзор

В этом уроке мы рассмотрим различные способы перечисления последовательностей чисел в пределах диапазона.

2. Перечисление номеров в диапазоне

2.1. Традиционный для цикла

Мы можем использовать традиционный цикл for для генерации чисел в заданном диапазоне:

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

Приведенный выше код создаст список, содержащий номера от start (включительно) до end (эксклюзивно).

2.2. JDK 8 IntStream.range

IntStream , введенный в JDK 8, может использоваться для генерации чисел в заданном диапазоне, устраняя необходимость в цикле for :

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

2.3. IntStream.rangeClosed

В предыдущем разделе end является эксклюзивным. Чтобы получить числа в диапазоне, где end является включающим, есть IntStream.rangeClosed :

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

2.4. IntStream.iterate

В предыдущих разделах для получения последовательности чисел использовался диапазон. Когда мы знаем, сколько чисел в последовательности необходимо, мы можем использовать IntStream.iterate :

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

Здесь параметр limit ограничивает количество элементов для итерации.

3. Заключение

В этой статье мы рассмотрели различные способы генерации чисел в пределах диапазона.

Фрагменты кода, как всегда, можно найти на GitHub .