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

Метод tryAdvance

Метод tryAdvance класса Spliterator применяет заданное действие к следующему элементу последовательности и возвращает true, если элемент существовал и был обработан, или false, если элементов больше нет. В параметр метода мы передаем объект Consumer - функциональный интерфейс, содержащий единственный метод accept, который принимает очередной элемент и выполняет над ним нужные действия. Метод изменяет внутреннее состояние сплитератора, сдвигая его к следующему элементу.

Синтаксис

boolean tryAdvance(Consumer<? super T> action)

Пример

Давайте получим сплитератор списка и поочередно обработаем его элементы с помощью 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"

Пример

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

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(); boolean res = spliterator.tryAdvance(System.out::println); System.out.println(res); spliterator.forEachRemaining(System.out::println); res = spliterator.tryAdvance(System.out::println); System.out.println(res); } }

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

1 true 2 3 4 5 false

Пример

Давайте с помощью tryAdvance соберем только четные элементы в новый список:

import java.util.ArrayList; 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(); List<Integer> res = new ArrayList<>(); while (spliterator.tryAdvance(n -> { if (n % 2 == 0) { res.add(n); } })); System.out.println(res); } }

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

[2, 4]

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

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