在Java函数式编程中,flatMap不仅是语法糖,更是处理多维数据的利器,它将嵌套结构化为流畅操作,让复杂数据转换变得优雅而高效。
flatMap核心机制:flatMap(Function<T, Stream<R>> mapper)接收一个返回Stream的函数,自动将内部所有流"展开"并连接成单一流。
// 示例1:拆分字符串并去重
List<String> sentences = Arrays.asList("Hello world", "Java Stream");
List<String> words = sentences.stream()
.flatMap(sentence -> Arrays.stream(sentence.split(" ")))
.distinct()
.collect(Collectors.toList());
// 结果: ["Hello", "world", "Java", "Stream"]
实战应用:处理嵌套数据结构时,flatMap展现出巨大价值。比如从订单列表中提取所有商品:
// 示例2:提取所有订单中的商品
class Order {
private List<Product> products;
// getters
}
orders.stream()
.flatMap(order -> order.getProducts().stream())
.collect(Collectors.toList());
flatMap使开发者能够避免嵌套循环,以声明式风格处理复杂数据转换,大大提升代码的可读性和维护性,是现代Java编程中不可或缺的工具。
949

被折叠的 条评论
为什么被折叠?



