📜  在Java中查找 Stream 的最后一个元素

📅  最后修改于: 2022-05-13 01:54:54.777000             🧑  作者: Mango

在Java中查找 Stream 的最后一个元素

给定一个包含一些元素的,任务是在Java中获取 Stream 的最后一个元素。

例子:

有很多方法可以找到 Stream 中的最后一个元素:

  1. 使用 Stream.reduce() 方法: reduce 方法作用于流中的两个元素,并根据需要的条件返回元素。因此,此方法可用于减少流,使其仅包含最后一个元素。

    方法:

    • 获取要返回第一个元素的元素流。
    • 要获取最后一个元素,您可以使用reduce()方法重复忽略第一个元素,直到没有第一个元素。
      Stream.reduce((first, second) -> second)
      
    • 这将 Stream 中的元素集减少为单个元素,即last
    • 因此,唯一的单个元素将保留在作为最后一个元素的流中。

    下面是上述方法的实现:
    例子:

    // 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
        lastElementInStream(Stream 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 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));
        }
    }
    
    输出:
    Last Element: Geek_Last
    
  2. 使用 Stream skip() 方法: skip()方法在删除前 N 个元素后返回一个流。因此,此方法可用于跳过除最后一个元素之外的元素。

    方法:

    • 获取要返回最后一个元素的元素流。
    • 要获取最后一个元素,您可以使用skip()方法和count()方法。
      Stream.skip(stream.count()-1)
    • 这会在删除第一个size()-1 个元素后返回一个流,这会产生单个元素流。
    • 这个方法后面跟着findFirst()方法,它返回第一个元素,它实际上是原始流的最后一个元素。

    下面是上述方法的实现:
    例子:

    // 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
        lastElementInStream(Stream 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 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));
        }
    }
    
    输出:
    Last Element: Geek_Last
    
  3. 找到反向流的第一个元素:

    方法:

    • 获取要返回第一个元素的元素流。
    • 要获得第一个元素,您必须首先反转流。倒车可以这样完成:
      stream.sorted(Collections.reverseOrder())
      
    • 该方法后面是 findFirst() 方法,它返回反向流的第一个元素。
    • 因此获得了原始流的第一个元素。

    下面是上述方法的实现:
    例子:

    // 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
        lastElementInStream(Stream 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 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));
        }
    }
    
    输出:
    Last Element: Geek_Last