Java8 Stream API 详细使用方法与操作技巧指南
什么是Java8 Stream API
Java8 Stream是用于处理集合数据的新操作API,提供了一种更加便捷的、并行化的数据处理方式。它可以优雅地处理数据集合中的数据,也可以高效地并行处理大量的数据。
Stream 本身是不存储数据的,其操作也不会改变源数据,相反,Stream 的每一个操作都会返回一个新的 Stream 对象,最终的操作才会触发实际的计算,称之为终端操作。
Stream 的基本使用
创建 Stream
Stream 可以从多种数据源中创建,如集合、数组、生成器函数等。
- 从集合创建Stream
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream();
- 从数组创建Stream
int[] nums = {1, 2, 3, 4, 5};
IntStream stream = Arrays.stream(nums);
中间操作
中间操作是返回 Stream 的操作,包括过滤、映射、排序等。
- 过滤操作
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
stream.filter(i -> i % 2 == 0).forEach(System.out::println);
- 映射操作
List<String> list = Arrays.asList("apple", "banana", "orange");
Stream<String> stream = list.stream();
stream.map(String::toUpperCase).forEach(System.out::println);
终端操作
终端操作是触发 Stream 实际计算的操作,包括 forEach、collect、reduce 等。
- forEach 操作
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
stream.forEach(System.out::println);
- collect 操作
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
List<Integer> evens = stream.filter(i -> i % 2 == 0).collect(Collectors.toList());
System.out.println(evens);
示例说明
示例1: 对一个集合进行过滤操作,仅留下其中的偶数,并对其进行求和操作。
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = list.stream();
int sum = stream.filter(i -> i % 2 == 0).mapToInt(Integer::intValue).sum();
System.out.println(sum); // 6
示例2:对学生成绩进行统计,包括学生平均分、最高分、最低分等。
List<Integer> scores = Arrays.asList(70, 80, 85, 90, 95);
IntSummaryStatistics stats = scores.stream().mapToInt(Integer::intValue).summaryStatistics();
System.out.println("平均分:" + stats.getAverage());
System.out.println("最高分:" + stats.getMax());
System.out.println("最低分:" + stats.getMin());
总结
Java8 Stream 提供了一种新的、更加便捷、高效的数据处理方式。在使用时,要熟悉其基本使用方法、中间操作和终端操作,同时掌握多种数据源的创建方式和常见的操作技巧。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java8 Stream API 详细使用方法与操作技巧指南 - Python技术站