在Java中查找 Stream 的最后一个元素
给定一个包含一些元素的流,任务是在Java中获取 Stream 的最后一个元素。
例子:
Input: Stream={“Geek_First”, “Geek_2”, “Geek_3”, “Geek_4”, “Geek_Last”}
Output: Geek_Last
Input: Stream={1, 2, 3, 4, 5, 6, 7}
Output: 7
有很多方法可以找到 Stream 中的最后一个元素:
- 使用 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
- 使用 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
- 找到反向流的第一个元素:
方法:
- 获取要返回第一个元素的元素流。
- 要获得第一个元素,您必须首先反转流。倒车可以这样完成:
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