欢迎访问宙启技术站
智能推送

Java中的Stream API和常见操作

发布时间:2023-09-29 22:10:27

Stream API是Java 8中引入的一种新的处理集合和数组的方式。它提供了一种流式处理元素的方法,能够高效地进行数据处理和转换。Stream API可以简化代码,提高代码的可读性和可维护性。

Stream API可以分为两种类型:中间操作和终端操作。中间操作是对数据的处理和转换,可以通过链式调用多个中间操作来实现复杂的数据处理逻辑。终端操作是对数据的最终处理,返回最终的结果或者触发数据处理的操作。

在Stream API中,常见的中间操作包括:

1. filter:根据指定条件过滤数据,只保留符合条件的元素。

2. map:将每个元素按照指定的方式进行转换,返回新的元素。

3. flatMap:将每个元素按照指定的方式转换为一个流,然后将所有流中的元素合并成一个流。

4. distinct:去除重复的元素。

5. sorted:对元素进行排序。

常见的终端操作包括:

1. forEach:对每个元素进行指定的操作。

2. collect:将元素收集到一个集合中。

3. count:统计元素的个数。

4. max和min:返回最大和最小的元素。

5. reduce:对元素进行归约操作,返回归约后的结果。

使用Stream API可以简化很多数据处理的操作,例如对一个集合中的数字进行筛选、转换和统计等。下面是一个示例代码:

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

// 使用filter筛选出偶数
List<Integer> evenNumbers = numbers.stream()
        .filter(n -> n % 2 == 0)
        .collect(Collectors.toList());

// 使用map将每个元素乘以2
List<Integer> doubledNumbers = numbers.stream()
        .map(n -> n * 2)
        .collect(Collectors.toList());

// 使用reduce求和
int sum = numbers.stream()
        .reduce(0, Integer::sum);

// 使用max求最大值
Optional<Integer> max = numbers.stream()
        .max(Integer::compare);

// 使用forEach输出每个元素
numbers.stream()
        .forEach(System.out::println);

通过上述代码可以看出,使用Stream API可以简化数据处理的代码量,并且使代码更加清晰和易于理解。Stream API提供了丰富的中间操作和终端操作,可以根据不同的需求选择合适的操作进行数据处理。