Encuentra el último elemento de un Stream en Java

Dada una secuencia que contiene algunos elementos, la tarea es obtener el último elemento de la secuencia en Java .

Ejemplo:

Entrada: Corriente={“Geek_First”, “Geek_2”, “Geek_3”, “Geek_4”, “Geek_Last”}
Salida: Geek_Last

Entrada: Corriente={1, 2, 3, 4, 5, 6, 7}
Salida: 7

Hay muchos métodos para encontrar los últimos elementos en un Stream :

  1. Uso del método Stream.reduce() : El método reduce funciona en dos elementos de la secuencia y devuelve el elemento según la condición requerida. Por lo tanto, este método se puede utilizar para reducir el flujo de modo que contenga solo el último elemento.

    Acercarse:

    • Obtenga la secuencia de elementos en la que se devolverá el primer elemento.
    • Para obtener el último elemento, puede usar el método reduce() para ignorar el primer elemento, repetidamente, hasta que no haya ningún primer elemento.
      Stream.reduce((first, second) -> second)
      
    • Esto reduce el conjunto de elementos en un Stream a un solo elemento, que es el último .
    • Por lo tanto, el único elemento único permanecerá en la corriente, que es el último elemento.

    A continuación se muestra la implementación del enfoque anterior:
    Ejemplo:

    // Java program to find last
    // element of a Stream in Java
      
    import java.util.*;
    import java.util.stream.*;
      
    public class GFG {
      
        // Function to find the
        // last_elements in a Stream
        public static <T> T
        lastElementInStream(Stream<T> stream)
        {
            T last_element
                = stream
      
                      // reduce() method reduces the Stream
                      // to a single element, which is last.
                      .reduce((first, second) -> second)
      
                      // if stream is empty
                      // null is returned
                      .orElse(null);
      
            return last_element;
        }
      
        // Driver code
        public static void main(String[] args)
        {
      
            Stream<String> stream
                = Stream.of("Geek_First", "Geek_2",
                            "Geek_3", "Geek_4",
                            "Geek_Last");
      
            // Print the last element of a Stream
            System.out.println(
                "Last Element: "
                + lastElementInStream(stream));
        }
    }
    Producción:

    Last Element: Geek_Last
    
  2. Uso del método Stream skip() : El método skip() devuelve un flujo después de eliminar los primeros N elementos. Por lo tanto, este método se puede utilizar para omitir los elementos excepto el último.

    Acercarse:

    • Obtiene la secuencia de elementos en la que se devolverá el último elemento.
    • Para obtener el último elemento, puede usar el método skip() junto con el método count() .
      Stream.skip(stream.count()-1)
    • Esto devuelve una secuencia después de eliminar los elementos first size()-1 , lo que da como resultado una secuencia de un solo elemento.
    • Este método es seguido por el método findFirst() , que devuelve el primer elemento que en realidad es el último elemento del flujo original.

    A continuación se muestra la implementación del enfoque anterior:
    Ejemplo:

    // Java program to find last
    // element of a Stream in Java
      
    import java.util.*;
    import java.util.stream.*;
      
    public class GFG {
      
        // Function to find the
        // last_elements in a Stream
        public static <T> T
        lastElementInStream(Stream<T> stream, int N)
        {
      
            T last_element
                = stream
      
                      // This returns a stream after
                      // removing first N-1 elements
                      // resultant stream will contain
                      // only single element
                      .skip(N - 1)
      
                      // findFirst() method return
                      // the first element of
                      // newly generated stream
                      .findFirst()
      
                      // if stream is empty
                      // null is returned
                      .orElse(null);
      
            return last_element;
        }
      
        // Driver code
        public static void main(String[] args)
        {
      
            Stream<String> stream
                = Stream.of("Geek_First", "Geek_2",
                            "Geek_3", "Geek_4",
                            "Geek_Last");
      
            int N = 5;
      
            // Print the last element of a Stream
            System.out.println(
                "Last Element: "
                + lastElementInStream(stream, N));
        }
    }
    Producción:

    Last Element: Geek_Last
    
  3. Encuentre el primer elemento de la corriente inversa :

    Acercarse:

    • Obtenga la secuencia de elementos en la que se devolverá el primer elemento.
    • Para obtener el primer elemento, primero debe invertir la corriente . La inversión se puede hacer como:
      stream.sorted(Collections.reverseOrder())
      
    • Este método es seguido por el método findFirst() , que devuelve el primer elemento del flujo inverso.
    • De ahí se obtiene el primer elemento del flujo original.

    A continuación se muestra la implementación del enfoque anterior:
    Ejemplo:

    // Java program to find last
    // element of a Stream in Java
      
    import java.util.*;
    import java.util.stream.*;
      
    public class GFG {
      
        // Function to find the
        // last_elements in a Stream
        public static <T> T
        lastElementInStream(Stream<T> stream)
        {
            T last_element
                = stream
      
                      // sorted(Collections.reverseOrder())
                      // is used to reverse the element of the stream
                      .sorted(Collections.reverseOrder())
      
                      // findFirst() method return
                      // the first element of reversed stream
                      // which is the last element of the stream
                      .findFirst()
      
                      // if stream is empty
                      // null is returned
                      .orElse(null);
      
            return last_element;
        }
      
        // Driver code
        public static void main(String[] args)
        {
      
            Stream<String> stream
                = Stream.of("Geek_First", "Geek_2",
                            "Geek_3", "Geek_4",
                            "Geek_Last");
      
            // Print the last element of a Stream
            System.out.println(
                "Last Element: "
                + lastElementInStream(stream));
        }
    }
    Producción:

    Last Element: Geek_Last
    

Publicación traducida automáticamente

Artículo escrito por SHUBHAMSINGH10 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 *