java流太太太..............好用了
共 1377字,需浏览 3分钟
·
2021-10-16 20:14
情景:一个集合对象list,现在想获取这个集合中每个对象的id,并将这些id值存放在另一个集合中,方便我去查询数据。如果是你来实现这个需求,你会用什么方法去实现呢。
我猜会有许多人会选择循环变量这个集合对象,取出id存放在集合里面,代码是这样的:
List list = clazzes;
List ids = new ArrayList();
for (Clazz clazz : list) {
ids.add(clazz.getId());
}
复制代码
但是!实际上,这个需求可以只用一行代码就可以解决,那是用的什么呢?“流”请看代码:
List list = clazzes;
List collect = list.stream().map(Clazz::getId).collect(Collectors.toList());
复制代码
使用流一行代码就可以解决关键看着清晰明了。上面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流 根据筛选条件查出符合的教师信息 对每一个操作进行筛选
通过各种筛选条件查出的结果:teacherList (集合类型)
Long count1 = teacherList.stream().filter(e -> e.getGender().equals(0)).count(); //男生数量
Long count2 = teacherList.stream().filter(e -> e.getGender().equals(1)).count(); //女生数量
复制代码
通过这样可以直接算出数量 而不用去便利算数据
而更多详细的stream流的信息可以去网上搜索学习
我对stream流的学习还在表面 还有许多灵活的用法我还需要继续学习 欢迎大佬指导!
作者:又菜又想玩的XXX
链接:https://juejin.cn/post/7018350873130565662
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。