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

Класс Spliterator

Класс Spliterator представляет собой интерфейс для обхода элементов источника данных и разделения этого источника на несколько частей. Основное назначение Spliterator - поддержка параллельной обработки потоков в Java Stream API. У Spliterator есть метод tryAdvance, который принимает потребителя и последовательно обрабатывает очередной элемент, метод trySplit, который пытается разделить текущий Spliterator на две части и вернуть новую часть, а также метод estimateSize, который возвращает приблизительное количество оставшихся элементов. Получить Spliterator можно с помощью метода spliterator у коллекций и других источников данных.

Синтаксис

Spliterator<T> spliterator = collection.spliterator(); spliterator.tryAdvance(consumer); Spliterator<T> part = spliterator.trySplit(); long size = spliterator.estimateSize();

Пример

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

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

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

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

Пример

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

import java.util.List; import java.util.Spliterator; public class Main { public static void main(String[] args) { List<Integer> list = List.of(1, 2, 3, 4, 5); Spliterator<Integer> first = list.spliterator(); Spliterator<Integer> second = first.trySplit(); System.out.println("First part:"); first.forEachRemaining(System.out::println); System.out.println("Second part:"); second.forEachRemaining(System.out::println); } }

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

"First part:" 1 2 3 "Second part:" 4 5

Пример

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

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

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

5 "a" 4

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

  • интерфейс Iterable,
    который представляет источник данных для обхода
  • метод spliterator,
    который возвращает Spliterator для Iterable
  • метод tryAdvance,
    который обрабатывает очередной элемент
  • метод trySplit,
    который делит Spliterator на две части
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить