Java 8 流及其操作
在 Java 中,流是在 Java 8 中引入的。它表示元素的集合,并支持对这些集合执行函数式操作。在这里,我们谈论的是像 数组、列表 和 集合 这样的集合。
该 Stream API 简单地将源元素通过各种内置方法传递,以返回所需的结果。在本文中,我们将讨论可以在 Java 流上执行的不同操作。
Java 8 流上的操作
我们可以对 Java 流执行两种类型的操作:
中间操作 - 它们使用 filter()、map()、limit()、skip() 等方法处理输入流的元素。
终止操作 - 它们触发中间操作以生成非流结果,例如打印、计数和存储。终止操作借助 forEach()、collect()、toArray() 等方法执行。
Java 流的方法统称为 高阶函数。中间操作和终止操作的主要区别在于,终止操作不能链接在一起,而中间操作可以链接。
Java 流上的过滤操作
在下面的 Java 程序中,我们将演示 Java 流的过滤操作。为此,我们将使用 filter() 方法过滤大于 10 的数字,使用 limit() 方法限制输出的大小,并使用 forEach() 方法打印结果。
import java.util.*; public class Example1 { public static void main(String[] args) { // creating a list of numbers List<Integer> numbers = Arrays.asList(5, 21, 32, 4, 13, 41, 10); // printing all numbers in the list System.out.println("Numbers in the given List : " + numbers); System.out.println("List of numbers greater than 10: "); // filtering the numbers greater than 10 from list numbers.stream().filter(nums -> nums > 10) // limiting the result to 2 only .limit(2) // printing the result .forEach(System.out::println); } }
运行此代码时,将产生以下结果:
Numbers in the given List : [5, 21, 32, 4, 13, 41, 10] List of numbers greater than 10: 21 32
Java 流上的排序操作
下面的 Java 程序显示了如何执行流的排序。为此,我们将使用 sorted() 方法按升序对元素进行排序,然后使用 forEach() 方法打印结果。
import java.util.*; public class Example2 { public static void main(String []args) { // creating a list of numbers List<String> terms = Arrays.asList("Objects", "Classes", "Methods", "Constructors", "Abstract"); System.out.println("List after Sorting: "); // Sorting the elements of list terms.stream() .sorted() // printing the result .forEach(System.out::println); } }
执行后,将显示以下输出:
List after Sorting: Abstract Classes Constructors Methods Objects
startsWith() 方法的使用
在这个 Java 程序中,我们将打印以字符“C”开头的流元素。我们将为此操作使用 filter()、startsWith() 和 collect() 方法。
import java.util.*; import java.util.stream.*; public class Example3 { public static void main(String []args) { // creating a list of numbers List<String> terms = Arrays.asList("Objects", "Classes", "Methods", "Constructors", "Abstract"); System.out.println("Original List: " + terms); System.out.println("List after filtering: "); // Filtering the elements that start with 'C' List<String> output = terms.stream() .filter(x -> x.startsWith("C")) .collect(Collectors.toList()); // printing the result System.out.println(output); } }
以上代码的输出如下:
Original List: [Objects, Classes, Methods, Constructors, Abstract] List after filtering: [Classes, Constructors]
distinct() 方法的使用
下面的 Java 程序说明了如何仅使用 distinct() 方法从元素流中打印不同的元素。
import java.util.*; public class Example4 { public static void main(String[] args) { // creating a list of numbers List<Integer> numbers = Arrays.asList(55, 55, 44, 34, 89, 89, 10, 10); System.out.println("Distinct elements from the list: "); // removing duplicate numbers from the list numbers.stream() .distinct() .forEach(System.out::println); } }
将获得以下输出:
Distinct elements from the list: 55 44 34 89 10
广告