1. Обзор
В этом уроке мы рассмотрим различные способы перечисления последовательностей чисел в пределах диапазона.
2. Список чисел в диапазоне
2.1. Традиционный цикл _
Мы можем использовать традиционный цикл 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;
}
Приведенный выше код сгенерирует список, содержащий числа от начала
(включительно) до конца
(исключительно).
2.2. JDK 8 IntStream.диапазон
IntStream
, представленный в JDK 8, может использоваться для генерации чисел в заданном диапазоне, устраняя необходимость в цикле for :
public List<Integer> getNumbersUsingIntStreamRange(int start, int end) {
return IntStream.range(start, end)
.boxed()
.collect(Collectors.toList());
}
2.3. IntStream.rangeClosed
В предыдущем разделе конец
эксклюзивный. Чтобы получить числа в диапазоне, где конец
включительно, есть 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 .