Метод spliterator
Метод spliterator класса Iterable создает и возвращает объект типа Spliterator, который предназначен для обхода элементов коллекции. В отличие от обычного итератора, сплитератор поддерживает параллельную обработку данных, позволяя разделять поток элементов на части для независимой обработки в разных потоках. Метод не принимает параметров и возвращает новый экземпляр сплитератора при каждом вызове.
Синтаксис
iterable.spliterator()
Пример
Давайте получим сплитератор для списка и обойдем все его элементы с помощью метода forEachRemaining:
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();
spliterator.forEachRemaining(System.out::println);
}
}
Результат выполнения кода:
"a"
"b"
"c"
"d"
"e"
Пример
Давайте получим характеристики сплитератора и его приблизительный размер:
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> spliterator = list.spliterator();
System.out.println(spliterator.estimateSize());
System.out.println(spliterator.characteristics());
}
}
Результат выполнения кода:
5
16464
Пример
Давайте разделим сплитератор на две части с помощью метода trySplit и обойдем каждую часть отдельно:
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> first = list.spliterator();
Spliterator<String> 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:
"c"
"d"
"e"
Second part:
"a"
"b"
Смотрите также
-
интерфейс
Iterable,
который представляет коллекцию для перебора -
метод
iterator,
который возвращает итератор коллекции -
интерфейс
Spliterator,
который представляет сплитератор -
метод
tryAdvance,
который обрабатывает следующий элемент