前言:
当前我们对“java的实训总结报告”大概比较重视,看官们都想要分析一些“java的实训总结报告”的相关知识。那么小编同时在网络上汇集了一些有关“java的实训总结报告””的相关内容,希望你们能喜欢,同学们快快来学习一下吧!这都快1202年,对Lambda依然一知半解,实在惭愧。最近搬砖中着重实践了一下,总结些实践,贴出如下,留作备忘。
1、基础查询封装
这个封装,主要是用来抽象数据库查询,美化代码的(强迫症)。
函数接口
@FunctionalInterfacepublic interface Query<T> { List<T> query() throws Exception;}
工具类
public class QueryUtil { public static <T> T query(Query<T> query) throws Exception { List<T> list = query.query(); if (null != list && list.size() > 0) { return list.get(0); } return null; } public static <T> List<T> queryList(Query<T> query) throws Exception { List<T> list = query.query(); if (null != list && list.size() > 0) { return list; } return new ArrayList<T>(); }}
2、遍历
遍历可以直接forEach也可以先stream()再forEach
#直接foreach
departmentVos.forEach(departmentVo -> { ids.add(departmentVo.getOaDeptId()); pids.add(departmentVo.getOaDeptParentId()); tmp.put(departmentVo.getOaDeptParentId(), departmentVo); });
#先stream与上等效
departmentVos.stream().forEach(departmentVo -> { ids.add(departmentVo.getOaDeptId()); pids.add(departmentVo.getOaDeptParentId()); tmp.put(departmentVo.getOaDeptParentId(), departmentVo); });
#特殊情况可以开启多线程
departmentVos.parallelStream().forEach(departmentVo -> { ids.add(departmentVo.getOaDeptId()); pids.add(departmentVo.getOaDeptParentId()); tmp.put(departmentVo.getOaDeptParentId(), departmentVo); });
3、调用工具类实现数据库查询
这个属于自己定义的函数接口
#单条
RSyncDeptPosiEmplVo rSyncDeptPosiEmplVo = QueryUtil.query(() -> { RSyncDeptPosiEmplVo rSyncDeptPosiEmplQc = new RSyncDeptPosiEmplVo(); rSyncDeptPosiEmplQc.setOaUserId(currentEmpl.getOaUserId()); rSyncDeptPosiEmplQc.setIsOn((byte) 1); rSyncDeptPosiEmplQc.setIsSeveralPositions((byte) 0); return this.irSyncDeptPosiEmplService.queryRSyncDeptPosiEmpl(rSyncDeptPosiEmplQc); });
#多条
List<RSyncDeptPosiEmplVo> rSyncDeptPosiEmplVos = QueryUtil.queryList(() -> { RSyncDeptPosiEmplVo rSyncDeptPosiEmplQc = new RSyncDeptPosiEmplVo(); rSyncDeptPosiEmplQc.setOaUserId(currentEmpl.getOaUserId()); rSyncDeptPosiEmplQc.setIsOn((byte) 1); rSyncDeptPosiEmplQc.setIsSeveralPositions((byte) 0); return this.irSyncDeptPosiEmplService.queryRSyncDeptPosiEmpl(rSyncDeptPosiEmplQc); });
4、ETL
姑且叫ETL吧
#原样输出(主要用于中间数据处理)
deptList.stream().map((dept) -> { return this.fillTreeData(dept, oaDeptIds); }).collect(Collectors.toList())
#过滤(如过滤掉null数据
deptList.stream().filter((dept) -> { return null==dept; }).collect(Collectors.toList())
#转换
deptList.stream().map(RSyncDeptPosiEmplVo::getId).collect(Collectors.toList())
5、计算
直接上码
#加teacherVo.getTotalTeachHour() + rClassSubjectVos.stream().mapToInt(RClassSubjectVo::getSubHour).sum()#平均teacherVo.getTotalTeachHour() + rClassSubjectVos.stream().mapToInt(RClassSubjectVo::getSubHour).average()#其它还有减、除、统计数量等等
6、判断
permissionVos.stream().anyMatch(p -> p.getIsApproval().equals((byte) 1)
7、搜索匹配
可以搜索符合条件的,也可以搜索符合条件的第一个
permissionVos.stream() .filter(p -> p.getDownSize() > 0 && p.getDownSize() > p.getRealDownSize()).findFirst();
暂时就这么多了,想起来再补充。
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #java的实训总结报告