Java Stream API 是Java 8中引入的一项功能,它允许程序员以声明式方式处理数据集合。通过Stream API,可以对数据执行复杂的查询操作,而不必编写冗余的代码。Stream 不是数据结构,它更像是一个高级版本的Iterator。单次使用,数据只能遍历一次,遍历过程中你可以对数据进行过滤、排序、聚合等操作。 博客将会介绍Java Stream API详解与使用。 希望这篇博客对Unity的开发者有所帮助。 大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 欢迎点赞评论哦.下面就让我们进入正文吧 !
提示:以下是本篇文章正文内容,下面案例可供参考
流式数据处理:对数据集合进行声明式、链式操作(类似SQL语句)
不存储数据:仅对源数据进行计算处理,不修改原始数据源
延迟执行:中间操作不会立即执行,直到遇到终止操作
2.与集合的区别:
// 传统集合操作(外部迭代)
for (User user : users) {
if (user.getAge() > 18) {
System.out.println(user.getName());
}
}
// Stream操作(内部迭代)
users.stream()
.filter(user -> user.getAge() > 18)
.map(User::getName)
.forEach(System.out::println);1.集合创建
list.stream() / list.parallelStream()2.数组转换
Arrays.stream(array)3.直接创建
Stream.of("a", "b", "c")4.生成器方法
Stream.iterate(0, n -> n+2)
Stream.generate(Math::random)5.基本类型流
IntStream.range(1, 5)1.筛选与切片
// 过滤年龄>18的用户
.filter(user -> user.getAge() > 18)
// 去重(依赖equals方法)
.distinct()
// 取前5个
.limit(5)
// 跳过前3个
.skip(3)2.映射操作
// 提取用户姓名
.map(User::getName)
// 扁平化处理(合并嵌套集合)
.flatMap(list -> list.stream())
// 记录中间值(调试用)
.peek(System.out::println) 3.排序
// 自然排序
.sorted()
// 自定义排序
.sorted(Comparator.comparing(User::getAge)) 1.遍历与收集
// 遍历输出
.forEach(System.out::println)
// 转换为List
.collect(Collectors.toList())
// 拼接字符串
.collect(Collectors.joining(", "))
// 分组(按年龄分组)
.collect(Collectors.groupingBy(User::getAge))
// 分区(年龄是否>18)
.collect(Collectors.partitioningBy(u -> u.getAge() > 18))2.匹配与查找
// 是否存在成年人?
.anyMatch(u -> u.getAge() >= 18)
// 查找第一个元素
.findFirst()
// 查找任意元素(并行流优化)
.findAny() 3.归约统计
// 计算总年龄
.mapToInt(User::getAge).sum()
// 求最大值
.max(Comparator.naturalOrder())
// 自定义归约(累加器)
.reduce(0, Integer::sum) // 转换为并行流
List<User> result = users.parallelStream()
.filter(u -> u.getAge() > 18)
.collect(Collectors.toList());
// 注意事项:
// 1. 确保操作线程安全
// 2. 数据量小时可能降低性能
// 3. 避免共享可变状态1.多层数据转换
List<String> emails = orders.stream()
.filter(o -> o.getTotal() > 100)
.map(Order::getCustomer)
.flatMap(customer -> customer.getEmails().stream())
.distinct()
.collect(Collectors.toList());2.分组统计
Map<String, Long> countByCity = users.stream()
.collect(Collectors.groupingBy(
User::getCity,
Collectors.counting()
));3.数值统计
IntSummaryStatistics stats = products.stream()
.mapToInt(Product::getStock)
.summaryStatistics();
// 输出:max=50, min=10, avg=30, sum=3004.注意事项
Java Stream API 是一个功能强大的工具,适用于处理集合和数据流。它提供了一种简洁而高效的方法来操作数据,尤其是在处理大量数据时。这个API优化了数据处理逻辑,使开发者能够以更少的代码执行复杂的数据转换和聚合操作。利用Java Stream API,可以轻松实现数据过滤、排序、转换及汇总,极大地提升了代码的可读性和可维护性。同时,Stream API 的函数式编程特性有助于减少错误和侧效应,使得并发程序的编写更为安全。通过使用Java Stream API,开发者可以写出更简洁、更高效、更易于维护的代码,同时享受到函数式编程带来的好处。
本次总结的就是Java Stream API详解与使用, 有需要会继续增加功能 如能帮助到你,就帮忙点个赞吧,三连更好哦,谢谢 你的点赞就是对博主的支持,有问题记得留言评论哦! 不定时更新Unity开发技巧,觉得有用记得一键三连哦。么么哒!