Java Stream findAny() con ejemplos

Stream findAny() devuelve un Opcional (un objeto contenedor que puede contener o no un valor no nulo) que describe algún elemento de la transmisión, o un Opcional vacío si la transmisión está vacía.

findAny() V/s findFirst() :

El método findAny() devuelve cualquier elemento de una secuencia, pero puede haber un caso en el que necesitemos que se obtenga el primer elemento de una secuencia filtrada. Cuando la secuencia en la que se está trabajando tiene un orden de encuentro definido (el orden en que se procesan los elementos de una secuencia), entonces findFirst() es útil, ya que devuelve el primer elemento de una secuencia.

Sintaxis:

Optional<T> findAny()

Where, Optional is a container object which
may or may not contain a non-null value 
and T is the type of objects and the function
returns an Optional describing some element of
this stream, or an empty Optional if the stream is empty.

Excepción: si el elemento seleccionado es nulo, se lanza NullPointerException .

Nota: findAny() es una operación de cortocircuito de terminal de la interfaz Stream. Este método devuelve cualquier primer elemento que satisfaga las operaciones intermedias. Esta es una operación de cortocircuito porque solo necesita que se devuelva ‘cualquier’ primer elemento y termine el resto de la iteración.

Ejemplo 1: método findAny() en Integer Stream.

// Java code for Stream findAny()
// which returns an Optional describing
// some element of the stream, or an
// empty Optional if the stream is empty.
import java.util.*;
  
class GFG {
  
    // Driver code
    public static void main(String[] args)
    {
  
        // Creating a List of Integers
        List<Integer> list = Arrays.asList(2, 4, 6, 8, 10);
  
        // Using Stream findAny() to return
        // an Optional describing some element
        // of the stream
        Optional<Integer> answer = list.stream().findAny();
  
        // if the stream is empty, an empty
        // Optional is returned.
        if (answer.isPresent()) {
            System.out.println(answer.get());
        }
        else {
            System.out.println("no value");
        }
    }
}

Producción :

2

Ejemplo 2: función findAny() en Stream of Strings.

// Java code for Stream findAny()
// which returns an Optional describing
// some element of the stream, or an
// empty Optional if the stream is empty.
import java.util.*;
  
class GFG {
  
    // Driver code
    public static void main(String[] args)
    {
  
        // Creating a List of Strings
        List<String> list = Arrays.asList("Geeks", "for",
                                          "GeeksQuiz", "GFG");
  
        // Using Stream findAny() to return
        // an Optional describing some element
        // of the stream
        Optional<String> answer = list.stream().findAny();
  
        // if the stream is empty, an empty
        // Optional is returned.
        if (answer.isPresent()) {
            System.out.println(answer.get());
        }
        else {
            System.out.println("no value");
        }
    }
}

Producción :

Geeks

Nota: El comportamiento de la operación Stream findAny() es explícitamente no determinista , es decir, es libre de seleccionar cualquier elemento en la secuencia. Varias invocaciones en la misma fuente pueden no devolver el mismo resultado.
Ejemplo 3: método findAny() para devolver los elementos divisibles por 4, de forma no determinista.

// Java code for Stream findAny() 
// which returns an Optional describing
// some element of the stream, or an 
// empty Optional if the stream is empty.
import java.util.OptionalInt;
import java.util.stream.IntStream;
  
class GFG {
      
    // Driver code
    public static void main(String[] args) {
          
    // Creating an IntStream
    IntStream stream = IntStream.of(4, 5, 8, 10, 12, 16)
                       .parallel();
      
    // Using Stream findAny(). 
    // Executing the source code multiple times
    // may not return the same result.
    // Every time you may get a different 
    // Integer which is divisible by 4.
    stream = stream.filter(i -> i % 4 == 0);
  
    OptionalInt answer = stream.findAny();
    if (answer.isPresent()) 
    {
        System.out.println(answer.getAsInt());
    }
}
}

Producción :

16

Publicación traducida automáticamente

Artículo escrito por Sahil_Bansall y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *