РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
494 of 1163 menu

Метод spliterator

Метод spliterator класса Stream возвращает объект типа Spliterator, который предназначен для последовательного и параллельного обхода элементов потока. Параметров метод не принимает. Полученный Spliterator можно использовать для перебора элементов через методы tryAdvance и forEachRemaining, а также для разделения потока на части через метод trySplit. После вызова метода spliterator исходный поток считается использованным, и повторно его использовать нельзя.

Синтаксис

stream.spliterator()

Пример

Давайте получим Spliterator из потока и обойдём все его элементы с помощью метода forEachRemaining:

import java.util.List; import java.util.Spliterator; import java.util.stream.Stream; public class Main { public static void main(String[] args) { Stream<String> stream = List.of("a", "b", "c", "d", "e").stream(); Spliterator<String> spliterator = stream.spliterator(); spliterator.forEachRemaining(System.out::println); } }

Результат выполнения кода:

"a" "b" "c" "d" "e"

Пример

Давайте поочерёдно обойдём элементы потока с помощью метода tryAdvance, который возвращает true, пока в потоке есть элементы:

import java.util.List; import java.util.Spliterator; import java.util.stream.Stream; public class Main { public static void main(String[] args) { Stream<Integer> stream = List.of(1, 2, 3, 4, 5).stream(); Spliterator<Integer> spliterator = stream.spliterator(); while (spliterator.tryAdvance(System.out::println)) { // elements are printed one by one } } }

Результат выполнения кода:

1 2 3 4 5

Пример

Давайте разделим поток на две части с помощью метода trySplit и обойдём каждую часть отдельно:

import java.util.List; import java.util.Spliterator; import java.util.stream.Stream; public class Main { public static void main(String[] args) { Stream<String> stream = List.of("a", "b", "c", "d", "e").stream(); Spliterator<String> spliterator = stream.spliterator(); Spliterator<String> part = spliterator.trySplit(); System.out.println("first part:"); spliterator.forEachRemaining(System.out::println); System.out.println("second part:"); part.forEachRemaining(System.out::println); } }

Результат выполнения кода:

"first part:" "c" "d" "e" "second part:" "a" "b"

Пример

Давайте узнаем характеристики потока, которые возвращает метод characteristics объекта Spliterator:

import java.util.List; import java.util.Spliterator; import java.util.stream.Stream; public class Main { public static void main(String[] args) { Stream<String> stream = List.of("a", "b", "c", "d", "e").stream(); Spliterator<String> spliterator = stream.spliterator(); System.out.println(spliterator.characteristics()); System.out.println(spliterator.estimateSize()); } }

Результат выполнения кода:

16464 5

Смотрите также

  • метод Stream,
    который создаёт поток элементов
  • метод iterator,
    который возвращает итератор для потока
  • метод forEach,
    который выполняет действие для каждого элемента
  • метод forEachOrdered,
    который обходит элементы в порядке следования
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить