在Java 8中,引入了新的抽象概念 Stream,它可以使你以一种声明的方式处理数据。
这种流式处理常常更易读且简洁。
本文将深入介绍Java中的Stream的用法,包括常用方法和具体的应用实例。
1. 创建Stream
Stream可以从多种数据源产生,比如:集合、数组、输入/输出通道等。
最常见的方式是从集合或数组创建。
List list = Arrays.asList("a", "b", "c");
Stream stream = list.stream();
String[] array = new String[]{"a", "b", "c"};
Stream stream2 = Arrays.stream(array);
2. 常用Stream操作
2.1 filter
filter方法用于通过设置的条件过滤出元素。
例如,从一个列表中过滤出长度大于2的字符串:
Stream stream = Stream.of("one", "two", "three", "four");
stream.filter(e -> e.length() > 2).forEach(System.out::println);
2.2 map
map方法用于映射每个元素到对应的结果。例如,对列表中的元素进行平方操作:
Stream stream = Stream.of(1, 2, 3, 4);
stream.map(e -> e * e).forEach(System.out::println);
2.3 reduce
reduce方法可以实现从Stream中生成一个值,其生成的是一个Optional对象。例如,对列表中的元素进行求和操作:
Stream stream = Stream.of(1, 2, 3, 4);
Optional sum = stream.reduce((e1, e2) -> e1 + e2);
sum.ifPresent(System.out::println);
3. 并行Stream
Java 8中的Streams可以是串行的也可以是并行的。
并行处理可以大大加速数据处理速度,特别是在大数据处理中,这点非常有用。
List list = Arrays.asList("a", "b", "c", "d", "e");
list.parallelStream().forEach(System.out::println);
结论
Java Stream API 提供了一种高效且易于使用的数据操作工具。
它改变了Java集合操作的传统模式,提供了更为简洁且易读的操作方式。