Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

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

Streams foram introduzidas no Java 8 para ajudar desenvolvedores a realizar operações agregadas a partir de uma sequência de objetos. No Java 9, mais alguns métodos foram adicionados para tornar streams melhores.

takeWhile(Predicate)

Sintaxe

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

takeWhile pega todos os valores até o predicado retornar false. Retorna, no caso de stream ordenada, um stream consistindo do maior prefixo de elementos correspondentes ao predicado.

Exemplo

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);
    }
}

Saída

abc

takeWhile pega a, b, c; ao encontrar string vazia, para.

dropWhile(Predicate)

Sintaxe

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

dropWhile descarta todos os valores no início até o predicado retornar true. Retorna, no caso de stream ordenada, um stream consistindo dos elementos restantes após descartar o maior prefixo correspondente ao predicado.

Exemplo

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);
    }
}

Saída

ef
ef

dropWhile descarta a, b, c; ao encontrar string vazia, pega o restante.

iterate

Sintaxe

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

O método iterate agora tem parâmetro hasNext predicate que para o loop quando retorna false.

Exemplo

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);
    }
}

Saída

3
6
9

ofNullable

Sintaxe

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

ofNullable evita NullPointerException e evita verificações de null para streams. Retorna stream sequencial contendo elemento único se não-nulo, caso contrário stream vazio.

Exemplo

import java.util.stream.Stream;

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

Saída

1
0

Esses métodos tornam a Stream API mais expressiva e segura para lidar com dados opcionais e condições de parada.

Java

  1. Dominando Operadores Java: Tipos, Sintaxe e Exemplos Práticos
  2. Comentários em Java: Tipos, Uso e Boas Práticas
  3. Dominando o Loop for Aprimorado em Java: Sintaxe, Exemplos e Boas Práticas
  4. Dominando Strings em Java: Criação, Métodos e Boas Práticas
  5. Dominando Interfaces em Java: Conceitos, Implementação e Boas Práticas
  6. Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
  7. Dominando Try-With-Resources em Java: Gerenciamento Automático de Recursos Explicado
  8. Anotações em Java Explicadas: Tipos, Posicionamento e Exemplos Práticos
  9. Asserções em Java: Guia Prático para Detectar Bugs e Garantir Confiabilidade do Código
  10. Java 9 (JDK 9) – Principais Recursos e Benefícios