老项目,jdk1.7优化;pc端打卡统计,进行条件筛选过滤

下午写得,被带我某哥说了,arrayList和linkList大致区别,linkList双向链表增删快,arrayList数组,查找快,用迭代器时删除,导致每次下标索引重排,反而会影响性能:

     String userName = request.getParameter("userName");String status = request.getParameter("status");//状态String state = request.getParameter("state");//洲别String nation = request.getParameter("nation");//国别if (nation != null && nation != "") {state = null;}YWMobileLogin ywMobileLogin = (YWMobileLogin) request.getSession().getAttribute("userLoginZH");// 获取其管理下所有教师和志愿者集合及人数 (指定地区)List<YWMobileLogin> all = appUtil.getUser(ywMobileLogin);if (userName != "" && userName!=null && !CollectionUtils.isEmpty(all)) {Iterator<YWMobileLogin> iterator = all.iterator();while (iterator.hasNext()) {if (!iterator.next().getUserName().contains(userName)) {iterator.remove();}}}if (state != "" && state != null && !CollectionUtils.isEmpty(all)) {Iterator<YWMobileLogin> iterator = all.iterator();while (iterator.hasNext()) {if (!iterator.next().getZbName().equals(state)) {iterator.remove();}}}if (nation != "" && nation != null && !CollectionUtils.isEmpty(all)) {Iterator<YWMobileLogin> iterator = all.iterator();while (iterator.hasNext()) {if (!iterator.next().getNationName().equals(nation)) {iterator.remove();}}}

改正版1.0(先这样改吧,周一来了再给他看):

     String userName = request.getParameter("userName");//姓氏String status = request.getParameter("status");//状态String state = request.getParameter("state");//洲别String nation = request.getParameter("nation");//国别Integer flag = 0;//表示洲别与国别对应关系Boolean term = true;//表示姓氏存在//当细分到国别时,洲别为空if (!StringUtil.isNull(nation)) {state = null;}if (!StringUtil.isNull(nation) && StringUtil.isNull(state)) {flag = 1;} else if (StringUtil.isNull(nation) && !StringUtil.isNull(state)) {flag = 2;}YWMobileLogin ywMobileLogin = (YWMobileLogin) request.getSession().getAttribute("userLoginZH");// 获取其管理下所有教师和志愿者集合及人数 (指定地区)List<YWMobileLogin> list = appUtil.getUser(ywMobileLogin);List<YWMobileLogin> all = new ArrayList<>();if (!CollectionUtils.isEmpty(list)) {List<YWMobileLogin> temporary = new ArrayList<>();switch (flag) {case 0: //洲别 和 国别为空temporary.addAll(list);break;case 1: // 洲别为空,国别不为空for (YWMobileLogin mobileLogin : list) {if (StringUtil.checkIsEqual(mobileLogin.getNationName(), nation)) {temporary.add(mobileLogin);}}break;case 2:// 洲别不为空,国别为空for (YWMobileLogin mobileLogin : list) {if (StringUtil.checkIsEqual(mobileLogin.getZbName(), state)) {temporary.add(mobileLogin);}}break;}//姓氏判断if (term && !CollectionUtils.isEmpty(temporary)) {for (YWMobileLogin mobileLogin : temporary) {if (StringUtil.checkIsEqual(mobileLogin.getUserName().substring(0,1),userName)) {all.add(mobileLogin);}}} else {all.addAll(temporary);}//姓氏不存在}

业务接口全部代码

/*** 获取打卡记录列表PC端整合*/@Overridepublic PageModel<PunchVo> getClockList(PageModel<PunchVo> page, HttpServletRequest request) throws Exception {String userName = request.getParameter("userName");//姓氏String status = request.getParameter("status");//状态String state = request.getParameter("state");//洲别String nation = request.getParameter("nation");//国别Integer flag = 0;//表示洲别与国别对应关系Boolean term = true;//表示姓氏存在//当细分到国别时,洲别为空if (!StringUtil.isNull(nation)) {state = null;}if (!StringUtil.isNull(nation) && StringUtil.isNull(state)) {flag = 1;} else if (StringUtil.isNull(nation) && !StringUtil.isNull(state)) {flag = 2;}YWMobileLogin ywMobileLogin = (YWMobileLogin) request.getSession().getAttribute("userLoginZH");// 获取其管理下所有教师和志愿者集合及人数 (指定地区)List<YWMobileLogin> list = appUtil.getUser(ywMobileLogin);List<YWMobileLogin> all = new ArrayList<>();if (!CollectionUtils.isEmpty(list)) {List<YWMobileLogin> temporary = new ArrayList<>();switch (flag) {case 0: //洲别 和 国别为空temporary.addAll(list);break;case 1: // 洲别为空,国别不为空for (YWMobileLogin mobileLogin : list) {if (StringUtil.checkIsEqual(mobileLogin.getNationName(), nation)) {temporary.add(mobileLogin);}}break;case 2:// 洲别不为空,国别为空for (YWMobileLogin mobileLogin : list) {if (StringUtil.checkIsEqual(mobileLogin.getZbName(), state)) {temporary.add(mobileLogin);}}break;}//姓氏判断if (term && !CollectionUtils.isEmpty(temporary)) {for (YWMobileLogin mobileLogin : temporary) {if (StringUtil.checkIsEqual(mobileLogin.getUserName().substring(0,1),userName)) {all.add(mobileLogin);}}} else {all.addAll(temporary);}//姓氏不存在}List<PunchVo> punchVoList = new ArrayList<>();//根据打卡人的id获取 打卡记录if (!CollectionUtils.isEmpty(all)) {StringBuffer platformIds = new StringBuffer();Map<String, PunchVo> punchVoMap = new HashMap<>();for (YWMobileLogin mobileLogin : all) {if (!StringUtil.isNull(mobileLogin.getPlatUserId())) {platformIds.append(",'" + mobileLogin.getPlatUserId() + "'");punchVoMap.put(mobileLogin.getPlatUserId(), PunchVo.transform(mobileLogin));}}String platformIdStr = platformIds.toString().replaceFirst(",", "");String punchSql = " from Punch where TO_DAYS(date_punch) = TO_DAYS(now()) and userId " +"in (" +platformIdStr + ")  GROUP BY userId ORDER BY date_punch desc";//防疫情况数据List<Antiepidemic> antiepidemics = antiepidemicDao.find("from Antiepidemic where userId in (" + platformIdStr + ") order by createDate DESC ");//当天打卡的数据List<Punch> punchList = punchDao.find(punchSql);HashMap<String, Antiepidemic> antiepidemicHashMap = new HashMap<>();if (!CollectionUtils.isEmpty(antiepidemics)) {for (Antiepidemic antiepidemic : antiepidemics) {antiepidemicHashMap.put(antiepidemic.getUserId(), antiepidemic);}}if (!CollectionUtils.isEmpty(punchList)) {for (Punch punch : punchList) {PunchVo punchVo = punchVoMap.get(punch.getUserId());if (punchVo != null) {BeanUtils.copyProperties(punch, punchVo);punchVo.setFgXmgy(punch.getOfficerName());punchVo.setId(punch.getUserId());}Antiepidemic antiepidemic = antiepidemicHashMap.get(punch.getUserId());if (antiepidemic != null) {punchVo.setIsVaccination(BigInteger.valueOf(antiepidemic.getIsVaccination()));punchVo.setEvidenceNAT(antiepidemic.getEvidenceNAT());punchVo.setDateNat(antiepidemic.getDateNAT());}}}//未打卡if (status != null && status != "") {if (StringUtil.checkIsEqual(status, "99") && !CollectionUtils.isEmpty(punchList)) {for (Punch punch : punchList) {punchVoMap.remove(punch.getUserId());}}String[] array = {"1", "2", "3", "4", "5"};//不舒服 到 正常if (!CollectionUtils.isEmpty(punchList) && StringUtil.isContations(CollectionUtils.arrayToList(array), status)) {Map<String, PunchVo> temporarya = new HashMap<>();for (Punch punch : punchList) {if (StringUtil.checkIsEqual(punch.getStatus().toString(), status)) {temporarya.put(punch.getUserId(), punchVoMap.get(punch.getUserId()));}}punchVoMap.clear();punchVoMap.putAll(temporarya);}}punchVoList.addAll(punchVoMap.values());}page.setDatas(punchVoList);return  getPageModel(page);}/*分页函数*/private PageModel<PunchVo> getPageModel(PageModel<PunchVo> page) {Integer pageNum = page.getCurrentPage();Integer pageSize = page.getPageSize();List<PunchVo> list = page.getDatas();if (CollectionUtils.isEmpty(list)) {return page;}int size = list.size();if (pageSize > size) {pageSize = size;}if (pageSize != 0) {//求出最大页数,防止pageNum越界int maxPageNum = size % pageSize == 0 ? size / pageSize : size / pageSize + 1;if (pageNum > maxPageNum) {pageNum = maxPageNum;}}//当前页第一条数据的下表int currentIndex = pageNum > 1 ? (pageNum - 1) * pageSize : 0;List<PunchVo> pageList = new ArrayList<>();//将当前页的数据放入到pageList中for (int i = 0; i < pageSize && currentIndex + i < size; i++) {pageList.add(list.get(currentIndex + i));}page.setCurrentPage(pageNum);page.setPageSize(pageSize);page.setTotalRows(list.size());page.setDatas(pageList);return page;}

记录工作时,优化程序代码二相关推荐

  1. c语言计算支点距离,长安本科毕业论文设计-—三级齿轮减速器的优化设计(附c语言优化计算程序代码).doc...

    长安本科毕业论文设计--三级齿轮减速器的优化设计(附c语言优化计算程序代码) 二 ○ 一 三 届 毕 业 论 文 三级齿轮减速器的优化设计 学 院: 工程机械学院 专 业: 机械设计制造及其自动化 姓 ...

  2. 台式计算机正常工作时的电流是多少,下列数据符合实际的是( )A.一盏家用台灯正常工作时通过的电流是...

    电功率的定义: 单位时间内电路中电场驱动电流所作的功.若直流电路两端的电压为U,流过该段电路的稳恒电流为I,则单位时间内电场力驱动电流所作的功为 P=IU. 电功率的单位是"瓦(特)&quo ...

  3. 程序员找工作时的技巧

    程序员找工作时的技巧(转载TrillGates)   1.背景 文章不长,读完的都是真爱!欢迎吐槽,但可能不一一回复(我不爽就不回了,嘻嘻!)写这篇博客,不知道会不会对大家有用,个人经验吧,也祝大家得 ...

  4. 真相了 | 敲代码时,程序员戴耳机究竟在听什么?

    出品 | CSDN 学院 你身边有没有这样一群人,除了早上打个招呼,必要的工作沟通,其它时候一直带个耳机. 这不就是我吗? 知乎上有个提问:程序员上班时戴耳机是在听什么? 高赞回答是:戴上耳机是告诉其 ...

  5. 真相了!敲代码时,程序员戴耳机究竟在听什么?

    你身边有没有这样一群人,除了早上打个招呼,必要的工作沟通,其它时候一直带个耳机. 这不就是我吗? 知乎上有个提问:程序员上班时戴耳机是在听什么? 高赞回答是:戴上耳机是告诉其他人不要打扰我,实际上并没 ...

  6. java程序员在交接别人的工作时如何保证顺利交接?

    序言 各位好啊,我是会编程的蜗牛,作为java开发者,尤其是在职场混迹了多年的老手,肯定会遇到同事离职的情况,或者自己跳槽的情况,这些都免不了需要做好交接工作,不管是别人交接给我们,还是我们交接给别人 ...

  7. JVM优化Java代码时都做了什么?

    专栏的前几篇文章了解了JVM的内存模型,GC调优的思路,让我们对于Java底层有了一定的了解,那么采用这种思路去提高JVM的性能,减少JVM额外消耗的同时,JVM究竟做了哪些工作,使我们的Java代码 ...

  8. asp java 变量_ASP_用stack变量优化Java代码,  java程序包含了大量的对象 - phpStudy...

    用stack变量优化Java代码 java程序包含了大量的对象,我们需要了解它们是从哪里被访问的,变量存储于何处对程序的性能有显著的影响--尤其是某些需要被频繁访问的变量. 我们写一个Java类,在其 ...

  9. python函数和代码复用思维导图_Python语言程序---代码复用与函数递归(二)

    Python语言程序---代码复用与函数递归(二) 函数递归 在函数定义中,调用函数自身的方式就是递归. 递归并不是程序设计的专有名词,在数学中也广泛存在.例如:n!.在n!中,我们定义当n=0时,n ...

  10. 最新在线客服系统php代码微信软件公众号小程序app二维码聊天网站源码

    最新在线客服系统php代码微信软件公众号小程序app二维码聊天网站源码 管理界面 独家长期更新日志(欢迎反馈BUG) 1.添加手机端前后台声音提示 2.添加后台客户管理显示在线离线 3.添加清空当前对 ...

最新文章

  1. 分布式事务选型的取舍
  2. linux虚拟机网络查看的方式
  3. Linux 解压后的启动流程分析
  4. javaWeb项目 IDEA中导入eclipes项目的方法。maven多模块项目(父子模块)与普通的web项目导入
  5. cupload怎么保存图片_图片标注软件labelImg使用指南
  6. css 相对单位rem详解
  7. PyTorch系列入门到精通——BN、LN、IN and GN
  8. 前端面试常考的10大排序算法
  9. 计算机考研408考试科目及备考指南
  10. java 封装 继承 多态
  11. 《Java从入门到放弃》框架入门篇:在MyEclipse中配置Mybatis框架
  12. 做外贸建站和营销的注意事项
  13. excel单元格格式设置
  14. Admob设置Android设备为测试设备(2020年5月7日亲测有效)
  15. 睡眠时的局部目标记忆再激活
  16. 分析家数据格式、结构
  17. 创业:房多多--如何成功从红海杀出一片天空
  18. 微型计算机控制数字量输入输出,计算机控制系统输入/输出通道
  19. UCOSIII实时操作系统------软件定时器
  20. 看看清华人是如何学习和生活的

热门文章

  1. 取色器ColorPix
  2. QT 字体家族中的 字体名称中英文名称对应
  3. JavaScript基础入门
  4. Echarts2的使用——绘制中国地图
  5. Java一步到位!彻底了解JDK、JRE、JVM分别是什么及它们之间的联系
  6. 学习笔记(20):Google开发专家带你学 AI:入门到实战(Keras/Tensorflow)(附源码)-深度学习“四件套”:数据、模型、损失函数与优化器...
  7. 剪映怎么把无字幕的英文视频翻译成制作成中文字幕?(附教程+剪映字幕翻译工具免费下载)...
  8. CSS4.2.3 参考手册.CHM
  9. Ubuntu部署Kibana和ElasticHD
  10. 红外遥控接收头 的引脚参数