Java8:函数式编程与Lambda表达式
来源:互联网 发布:联影 算法怎么样 编辑:程序博客网 时间:2024/05/17 23:37
一、代码
/* 3、使用Stream API和Lambda表达式来进行筛选匹配,并依据推送标志进行推送 */ Map<Date, Map<Boolean, List<Schedule>>> scheduleTodayMap = pushSchedules .stream() .collect( groupingBy( Schedule::getEffectdate, groupingBy((Schedule s) -> StringUtil .formatDate(new Date(), "yyyy-MM-dd") .equals(StringUtil.formatDate( s.getEffectdate(), "yyyy-MM-dd"))))); List<Schedule> scheduleTodayList = null; for (Map<Boolean, List<Schedule>> v : scheduleTodayMap.values()) scheduleTodayList = v.get(true); List<Room> rooms = (List<Room>) roomRepository.findAll(); List<String> roomCodes = scheduleTodayList.stream() .map(Schedule::getRoom).map(Room::getCode) .flatMap(s -> rooms.stream().map(Room::getCode).filter(s1 -> { return s.equals(s1) == true; })).collect(toList()); boolean isRoomCodeInDataBase = false; if (scheduleTodayList != null) isRoomCodeInDataBase = roomCodes.size() > 0; String roomCode; String userCode; Integer flag; int i = 0; for (String s : scheduleToday) { roomCode = s.substring(s.indexOf("-") + 1, s.indexOf("*")); userCode = s.substring(s.indexOf(".") + 1, s.indexOf("-")); flag = Integer.valueOf(s.substring(s.indexOf("*") + 1)); room = roomRepository.findByCode(roomCode); doctor = doctorRepository.findByCode(userCode); if (isRoomCodeInDataBase) { roomService.updateRoom(room.getId(), room.getName(), doctor.getCode(), doctor.getName(), doctor.getProfit(), doctor.getPhotoPath()); pushSchedule(room, doctor, flag, flush); i++; if (i == scheduleToday.size()) f = 0;/* 最后,将成功标志置为0 */ } } return f.toString();
二、业务场景
详见:流程设计与代码注释:冷思考(二)
三、重构缘由
项目早与2016年前交付使用,2017年4月初,由于硬件故障频发,需要从软件方面进行优化,在修改代码时,发现原代码封装与抽象都做的不太好,一些设计模式也未很好的应用,最近也正好在看一些Java的书籍,遂使用Java8的函数式编程新特性尝试了一二,代码量减少明显,抽象与封装、命名和注释也更加规范。
0 0
- Java8:函数式编程与Lambda表达式
- java8函数式编程之五--lambda表达式与流
- Java8 Lambda表达式 函数式编程
- Java8 Lambda表达式 函数式编程
- Java8 Lambda表达式 函数式编程
- Java8 Lambda表达式 函数式编程(转)
- Java8 Lambda表达式 函数式编程 方法引用
- Java8函数式编程之二 : Lambda表达式
- JAVA8学习总结——函数式编程与lambda表达式
- Java8,Function函数式接口与Lambda表达式初体验
- Java8-初识Lambda表达式与函数式接口
- Java函数式编程与Lambda表达式
- JAVA8新特性 函数式编程Lambda
- java8 lambda表达式-函数接口
- 【读书笔记——java8函数式编程】第一章 简介 第二章 Lambda表达式
- Java8---Lambda函数编程练习
- 函数式编程 Lambda表达式
- java8之Lambda表达式 2:内建函数式接口
- leetcode之单链表题目汇总
- bat脚本学习 --参数传递
- lua中table操作的相关函数
- html5的学习笔记
- 深度神经网络结构以及Pre-Training的理解
- Java8:函数式编程与Lambda表达式
- JS设置页面下拉刷新
- java web项目内存溢出
- Qt之描绘轮廓
- Oracle存放时间问题
- SurfaceCreated不调用的解决方法
- mysql监控的chk_mysql.sh脚本内容for show variables
- tensorflow训练了10万次,运行完毕,对这个word2vec终于有点感觉了
- 常用工具脚本1