IntStream.range()
Создаёт поток целых чисел из диапазона.
Доступно с: Java 8
Синтаксис
static IntStream range(int startInclusive, int endExclusive)
static IntStream rangeClosed(int startInclusive, int endInclusive)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| startInclusive | int | Первое число. |
| endExclusive | int | Граница: у `range()` не входит, у `rangeClosed()` входит. |
Возвращаемое значение
IntStreamПоток последовательных целых чисел.
Примеры
Полуоткрытый и закрытый диапазон:
void main() {
IO.println(Arrays.toString(IntStream.range(0, 5).toArray()));
IO.println(IntStream.rangeClosed(1, 5).sum());
}Результат:
[0, 1, 2, 3, 4]
15Индексы вместо цикла for:
void main() {
List<String> names = List.of("Anna", "Oleg", "Ivan");
IntStream.range(0, names.size())
.mapToObj(i -> (i + 1) + ". " + names.get(i))
.forEach(IO::println);
}Результат:
1. Anna
2. Oleg
3. IvanПримечания
IntStream хранит примитивы int без упаковки и умеет sum(), average(), max(). Чтобы вернуться к потоку объектов, используйте boxed() или mapToObj(). Для long есть LongStream.range().
См. также
- IntStream.sum() — Складывает все числа потока.
- Stream.iterate() — Создаёт поток, где каждый элемент вычисляется из предыдущего.
- Stream.mapToInt() — Превращает поток объектов в поток чисел `int`.
Вопросы и ответы по теме
В учебнике
- Что такое поток данных — Stream API в Java — источник, промежуточные и завершающие операции, создание потоков, ленивые вычисления и одноразовость потока.