final与Java Stream API中的中间操作与终端操作

·
2025-06-19 23:44:16

final与Java Stream API中的中间操作与终端操作

发布时间:2024-10-10 11:33:22

来源:亿速云

阅读:86

作者:小樊

栏目:编程语言

在Java中,final关键字和Java Stream API的中间操作与终端操作是两个不同的概念,但它们在编程中都扮演着重要的角色。

final关键字:

final是Java中的一个关键字,用于声明一个变量、方法或类为常量或不可修改。

当用于变量时,final变量一旦被赋值后就不能再改变。

当用于方法时,final方法不能被子类重写。

当用于类时,final类不能被继承。

在Stream API的上下文中,final通常不直接相关,但你可能会在某些情况下遇到它,例如在使用collect方法时,可能需要将结果存储在一个final变量中。

Java Stream API中的中间操作与终端操作:

中间操作:中间操作不会立即执行,而是返回一个新的Stream流。这些操作是惰性的,只有在执行终端操作时才会被触发。常见的中间操作有filter(), map(), flatMap(), sorted(), distinct()等。

终端操作:终端操作会触发Stream上的所有中间操作,并产生一个结果。终端操作是不可惰性的,它们会立即执行并得到结果。常见的终端操作有forEach(), toArray(), reduce(), collect(), anyMatch(), allMatch(), noneMatch()等。

下面是一个简单的例子,展示了如何使用Java Stream API的中间操作和终端操作:

import java.util.Arrays;

import java.util.List;

import java.util.stream.Collectors;

public class StreamExample {

public static void main(String[] args) {

List numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

// 中间操作:过滤出偶数

List evenNumbers = numbers.stream()

.filter(n -> n % 2 == 0)

.collect(Collectors.toList());

System.out.println("Even numbers: " + evenNumbers);

// 终端操作:计算偶数的和

int sumOfEvenNumbers = evenNumbers.stream()

.mapToInt(Integer::intValue)

.sum();

System.out.println("Sum of even numbers: " + sumOfEvenNumbers);

}

}

在这个例子中,filter()是一个中间操作,用于从原始列表中过滤出偶数。collect()是一个终端操作,用于将过滤后的结果收集到一个新的列表中。然后,我们使用另一个终端操作mapToInt()和sum()来计算这个新列表中所有数字的和。