一、Stream基本概念
Stream(流)是一个代表数据源的序列,可以对其中的元素进行各种操作,如过滤、映射、排序等。Stream API提供了一种高效且简洁的方式来处理数据,它支持并行处理,可以提高程序的性能。
二、创建Stream
在Java 8中,有多种方式可以创建Stream,以下是几种常见的创建方式:
- 通过集合创建:可以使用Collection接口中的stream()方法将集合转换为Stream,例如:
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream();
- 通过数组创建:可以使用Arrays类中的stream()方法将数组转换为Stream,例如:
int[] arr = {
1, 2, 3};
IntStream stream = Arrays.stream(arr);
- 通过Stream的静态方法创建:Stream类提供了一些静态方法用于创建Stream,例如:
Stream<String> stream = Stream.of("a", "b", "c");
三、常用操作
- filter(过滤):用于筛选出满足条件的元素,例如:
List<String> list = Arrays.asList("a", "b", "c");
List<String> filteredList = list.stream().filter(s -> s.startsWith("a")).collect(Collectors.toList());
- map(映射):用于对每个元素进行转换,例如:
List<Integer> list = Arrays.asList(1, 2, 3);
List<String> mappedList = list.stream().map(String::valueOf).collect(Collectors.toList());
- sorted(排序):用于对元素进行排序,例如:
List<Integer> list = Arrays.asList(1, 2, 3);
List<Integer> sortedList = list.stream().sorted().collect(Collectors.toList());
- reduce(归约):用于将多个元素合并为一个元素,例如:
List<Integer> list = Arrays.asList(1, 2, 3);
Optional<Integer> sum = list.stream().reduce((a, b) -> a + b);
四、实战案例
假设有一个需求:给定一个整数列表,求其中所有偶数的和。我们可以使用Stream API来实现这个需求:
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6);
int evenSum = list.stream().filter(n -> n % 2 == 0).mapToInt(Integer::intValue).sum();
System.out.println("偶数之和:" + evenSum);
}
总结:通过以上介绍,我们可以看到Stream API提供了一种简洁、高效的数据处理方式。在实际开发中,我们可以充分利用Stream API来简化代码,提高程序性能。