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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP