Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Java 9 Stream API Enhancements: takeWhile, dropWhile, iterate, ofNullable

Streams в Java 8 позволяли декларативно обрабатывать последовательности. Java 9 добавила полезные методы.

takeWhile(Predicate)

Берёт элементы, пока предикат возвращает true. Для упорядоченных стримов — самый длинный префикс, удовлетворяющий предикату.

default Stream<T> takeWhile(Predicate<? super T> predicate)

Пример

Stream.of("a","b","c","","e","f").takeWhile(s -> !s.isEmpty())
      .forEach(System.out::print); // вывод: abc

dropWhile(Predicate)

Пропускает элементы в начале, пока предикат true. Возвращает остаток после самого длинного префикса, удовлетворяющего предикату.

default Stream<T> dropWhile(Predicate<? super T> predicate)

Пример

Stream.of("a","b","c","","e","f").dropWhile(s -> !s.isEmpty())
      .forEach(System.out::print); // вывод: ef
Stream.of("a","b","c","","e","","f").dropWhile(s -> !s.isEmpty())
      .forEach(System.out::print); // вывод: ef

iterate с предикатом (hasNext)

Новая перегрузка iterate(seed, hasNext, next) останавливается, когда hasNext возвращает false.

static <T> Stream<T> iterate(T seed, Predicate<? super T> hasNext, UnaryOperator<T> next)

Пример

IntStream.iterate(3, x -> x < 10, x -> x + 3).forEach(System.out::println);
// 3, 6, 9

ofNullable

Создаёт стрим с одним элементом, если значение не null, иначе пустой стрим. Избегает NPE и явных null-check.

static <T> Stream<T> ofNullable(T t)

Пример

Stream.ofNullable(100).count(); // 1
Stream.ofNullable(null).count();  // 0

Эти методы делают Stream API более выразительным и безопасным.

java

  1. Освоение операторов Java: типы, синтаксис и практические примеры
  2. Комментарии в Java: типы, использование и лучшие практики
  3. Освоение улучшенного цикла for в Java: синтаксис, примеры и лучшие практики
  4. Освоение строк в Java: создание, методы и лучшие практики
  5. Интерфейсы в Java: концепции, реализация и лучшие практики
  6. Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
  7. Try-with-resources в Java: автоматическое управление ресурсами
  8. Аннотации в Java: типы, размещение и практические примеры
  9. Assertions в Java: практическое руководство по обнаружению багов и обеспечению надежности кода
  10. Java 9 (JDK 9): ключевые возможности и преимущества