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

Java 9 — улучшения потокового API

Потоки были введены в Java, чтобы помочь разработчикам выполнять агрегатные операции над последовательностью объектов. В Java 9 добавлено еще несколько методов для улучшения потоков.

takeWhile(интерфейс предикатов)

Синтаксис

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

Метод takeWhile принимает все значения, пока предикат не вернет false. В случае упорядоченного потока он возвращает поток, состоящий из самого длинного префикса элементов, взятых из этого потока, соответствующих заданному предикату.

Пример

import java.util.stream.Stream;

public class Tester {
   public static void main(String[] args) {
      Stream.of("a","b","c","","e","f").takeWhile(s->!s.isEmpty())
         .forEach(System.out::print);		 
   } 
}

Вывод

Метод takeWhile принимает все значения a, b и c, а когда строка становится пустой, выполнение прекращается.

abc

dropWhile(интерфейс предиката)

Синтаксис

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

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

Пример

import java.util.stream.Stream;

public class Tester {
   public static void main(String[] args) {
      Stream.of("a","b","c","","e","f").dropWhile(s-> !s.isEmpty())
         .forEach(System.out::print);
      
      System.out.println();
      Stream.of("a","b","c","","e","","f").dropWhile(s-> !s.isEmpty())
         .forEach(System.out::print);
   } 
}

Вывод

Метод dropWhile отбрасывает значения a, b и c, а когда строка становится пустой, он принимает все значения.

ef
ef

повторить

Синтаксис

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

Метод iterate теперь имеет предикат hasNext в качестве параметра, который останавливает цикл, когда предикат hasNext возвращает значение false.

Пример

import java.util.stream.IntStream;

public class Tester {
   public static void main(String[] args) {
      IntStream.iterate(3, x -> x < 10, x -> x+ 3).forEach(System.out::println);
   } 
}

Вывод

3
6
9

нуль

Синтаксис

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

Метод ofNullable введен для предотвращения исключений NullPointerException и во избежание нулевых проверок для потоков. Этот метод возвращает последовательный поток, содержащий один элемент, если он не равен нулю, в противном случае возвращает пустой поток.

Пример

import java.util.stream.Stream;

public class Tester {
   public static void main(String[] args) {
      long count = Stream.ofNullable(100).count();
      System.out.println(count);
  
      count = Stream.ofNullable(null).count();
      System.out.println(count);
   } 
}

Вывод

1
0

java

  1. Операторы Java
  2. Java-комментарии
  3. Java для каждого цикла
  4. Java-строки
  5. Java-интерфейс
  6. Анонимный класс Java
  7. Java-проба с ресурсами
  8. Java-аннотации
  9. Утверждения Java
  10. Java 9 — Обзор