小知识,大挑战!本文正在参与“程序员必备小知识”创作活动
- 情景:一个集合对象list,现在想获取这个集合中每个对象的id,并将这些id值存放在另一个集合中,方便我去查询数据。如果是你来实现这个需求,你会用什么方法去实现呢。
我猜会有许多人会选择循环变量这个集合对象,取出id存放在集合里面,代码是这样的:
1 | ini复制代码List<Clazz> list = clazzes; |
但是!实际上,这个需求可以只用一行代码就可以解决,那是用的什么呢?“流”请看代码:
1 | ini复制代码List<Clazz> list = clazzes; |
使用流一行代码就可以解决关键看着清晰明了。
上面list.stream().map(Clazz::getId).collect(Collectors.toList())这一行代码用了JAVA8 的两个新特性
- 双冒号 双冒号就是把方法当作参数传递给需要的方法,或者是传递到stream()中去。在这里就是将其传到stream中去其语法格式 类名::方法名
- stream 流 通过Collectors 类将流转换成集合元素 流的操作还有许多,可以参考搜索网络
再分享一下 最近根据echart图来查询数据,我在写查询语句筛选条件使用了大量的stream流,发现使用stream流是真的舒服。
我先描述我最近的一个接口:这个接口需要展示四个饼图。而四个饼图是:1.男女教师占比;2.各年龄段占比 3.学历占比,4.职称统计
我想在一个接口中完成这个四个的查询 我的思路有几个:
1.是写多个查询语句 需要一个查询一个(但是各种筛选条件下来 很麻烦)
2.利用视图 可以用来多次调用(但是在查询中会存在in操作 觉得麻烦)
3.利用stream流 根据筛选条件查出符合的教师信息 对每一个操作进行筛选
1 | scss复制代码 通过各种筛选条件查出的结果: teacherList (集合类型) |
通过这样可以直接算出数量 而不用去便利算数据
而更多详细的stream流的信息可以去网上搜索学习
我对stream流的学习还在表面 还有许多灵活的用法我还需要继续学习 欢迎大佬指导!
本文转载自: 掘金