Java中的流函数的使用方式及示例
发布时间:2023-05-20 22:30:29
流(Stream)是Java 8中新增的一个功能,它可以用于对集合(Collection)和数组(Array)进行批量操作,以达到更加简洁、高效的代码编写。本文将介绍Java中的流函数的使用方式及示例。
1. 创建流
创建一个流需要以下三个步骤:
* 从一个集合或者数组创建一个流
* 对流进行操作
* 遍历流并处理数据
下面是创建一个List集合并将其转换为流的示例:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); Stream<Integer> stream = numbers.stream();
2. 流的操作
流的操作可以分类为两种:中间操作和终止操作。中间操作会返回一个新的流,而终止操作会根据流产生一个最终结果。
2.1 中间操作
中间操作可以对流进行过滤、排序、映射等操作。下面是一些常见的中间操作:
* filter:过滤流中不符合条件的元素
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); Stream<Integer> stream = numbers.stream(); Stream<Integer> filteredStream = stream.filter(n -> n % 2 == 0);
* map:对流中的每个元素进行操作后返回一个新的流
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); Stream<Integer> stream = numbers.stream(); Stream<String> stringStream = stream.map(String::valueOf);
* sorted:对流中的元素进行排序
List<Integer> numbers = Arrays.asList(5, 4, 3, 2, 1); Stream<Integer> stream = numbers.stream(); Stream<Integer> sortedStream = stream.sorted();
2.2 终止操作
终止操作会产生一个最终结果,例如对流求和、求最大值等操作。下面是一些常见的终止操作:
* forEach:遍历流中的元素并对每个元素执行操作
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); Stream<Integer> stream = numbers.stream(); stream.forEach(System.out::println);
* collect:将流中的元素收集到一个集合中
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); Stream<Integer> stream = numbers.stream(); List<Integer> newNumbers = stream.collect(Collectors.toList());
* reduce:对流中的元素进行归约操作,例如对所有元素求和
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); Stream<Integer> stream = numbers.stream(); Integer sum = stream.reduce(0, (a, b) -> a + b);
3. 完整示例
下面是一个完整的示例,演示了如何将一个List集合中的元素进行过滤并转换成一个Map,其中Map的键为元素的字符串形式,值为元素的长度。
List<String> strings = Arrays.asList("apple", "banana", "cherry", "durian", "orange");
Map<String, Integer> map = strings.stream()
.filter(s -> s.length() > 5)
.collect(Collectors.toMap(Function.identity(), String::length));
System.out.println(map);
运行结果如下:
{banana=6, cherry=6}
本文介绍了Java中流函数的使用方式及示例,演示了如何创建流、对流进行过滤、映射、排序等中间操作以及如何将流收集到集合中、对流进行归约操作等终止操作。流是Java中一个非常有用且强大的功能,它能够大大简化代码,并且提高代码的执行效率。
