目录
前言
当你某天看到舍友的代码不再写for循环时,你的反应:
你还在 new Collection<>() ,写着for循环的时候,舍友已经开始偷偷卷你,更改代码风格了
本文将带着大家简单理解 Stream 流,并通过部分案例描述 Stream 流 的实用方法
Stream流 是什么?
Stream 流是 Java 8 引入的一个强大工具,它提供了一种全新的方式来处理集合和数组等数据源,使得数据处理变得更加简单、高效和易于理解。
通俗的理解起来就是提供了一种更加便利的遍历处理方式。
如果你要问我 Stream流用起来什么感觉?
那我只能说,,这种感觉就像飞翔在~~
噢不对,,感觉就是:
为什么要用Steam流
Stream 流的主要用途是提供一种高效且表达力高的方式来处理集合和数组等数据源。通过使用 Stream 流,可以避免显式的迭代器和循环,使得代码更加简洁、易读。Stream 流支持复杂的查询/过滤、映射/转换、归约/汇总等操作,能够极大地简化数据处理的复杂度。
总结起来还是:简洁、易读
当然,这也让你的代码看起来更高级那么一点点~~
如下案例,拿到所有的评论的id 集合的两种方法。
- 第一种-for循环便利获取
List<Comment> list = commentMapper.selectList(wrapper);
List<Integer> commentId = new ArrayList<>();
for(Comment c : list){
commentId.add(c.getId());
}
- 第二种-Stream流获取
List<Comment> list = commentMapper.selectList(wrapper);
List<Integer> commentId = list.stream().map(Comment::getId).collect(Collectors.toList());
两种方法的区别显而易见
下面介绍stream流比较实用的方法
常见stream流使用案例
在这里我们准备一个简单的对象来进行案例测试,只约定两个字段。
@Data
@AllArgsConstructor
public class StreamTestObject {
Integer id1;
Integer id2;
}
映射 map() & 集合 collect()
map() 方法是最常用的方法之一,它可以将流中的每个元素转换成另一种形式,返回转换后的 Stream。
如前文的例子所示,
单字段映射
List<StreamTestObject> streamTestObjects = Arrays.asList(
new StreamTestObject(1, 2),
new StreamTestObject(3, 4),
new StreamTestObject(5, 6));
// 便于观察变化
Stream<StreamTestObject> stream = streamTestObjects.strea