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

Java函数式接口——Stream API的用法详解

发布时间:2023-05-24 06:49:21

什么是Stream API?

Stream API是Java 8中提供的一个处理集合(Collection)和数组的新方式。它提供了一种简单的流式操作方式,用于处理数据修改、筛选和过滤数据等操作。

Stream API的优势:

1. 可实现并行处理,提升处理效率。

2. 更加简洁、优雅的代码风格。

3. 简化多级数据处理和操作。

4. 支持延迟计算和短路操作。

Stream API的使用方法:

Stream API提供了两种形式的方法链式编程:

1. Intermediate方法:主要实现数据的筛选、投影、过滤等操作。

如 filter(),map(),distinct(),sorted(),limit(),skip()等

2. Terminal方法:主要实现触发数据处理并返回结果的操作。

如forEach(),toArray(),reduce(),collect()等

Stream API的基本应用:

1. 集合的筛选和过滤

Stream API可以使用filter()方法和map()方法进行数据的筛选和过滤,filter()方法返回符合条件的元素组成的集合,map()方法将原集合的元素映射成新集合的元素。

示例代码:

List<String> list = Arrays.asList("apple", "banana", "lemon", "pear", "orange");

List<String> list2 = list.stream()

                          .filter(s -> s.length() > 5)

                          .map(String::toUpperCase)

                          .collect(Collectors.toList());

System.out.println(list2);

结果:[LEMON, ORANGE]

2. 集合的统计和计算

Stream API可以使用count()方法、min()方法、max()方法、sum()方法以及平均值方法average()方法等实现数据的统计和计算。

示例代码:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

long count = numbers.stream().count();

int sum = numbers.stream().mapToInt(Integer::intValue).sum();

Optional<Integer> max = numbers.stream().max(Integer::compareTo);

System.out.println("count:" + count);

System.out.println("sum:" + sum);

System.out.println("max:" + max.get());

结果:

count:5

sum:15

max:5

3. 集合的排序和去重

Stream API可以使用sorted()方法和distinct()方法实现对集合元素的排序和去重操作。

示例代码:

List<Integer> numbers = Arrays.asList(4, 3, 2, 1, 5, 4, 3, 2, 1);

List<Integer> list = numbers.stream()

                             .sorted()

                             .distinct()

                             .collect(Collectors.toList());

System.out.println(list);

结果:[1, 2, 3, 4, 5]

4. 集合的批量操作

Stream API可以使用forEach()方法实现集合的批量操作,对于集合中的每个元素,都可以应用一个特定的操作。

示例代码:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);

numbers.stream().forEach(System.out::println);

结果:

1

2

3

4

5

总结:

Stream API是Java 8提供的一种新方式,它能够以更加优雅和简洁的方式处理集合和数组,实现数据的筛选、过滤、统计、计算、排序、去重等操作,提高代码效率和可读性,是Java 8 中一个重要的新特性。