Java8:函数式编程与Lambda表达式
2017-05-11 18:29
519 查看
一、代码
/* 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的函数式编程新特性尝试了一二,代码量减少明显,抽象与封装、命名和注释也更加规范。相关文章推荐
- Java8 Lambda表达式 函数式编程
- java1.8 lambda表达式 函数式编程 闭包
- java函数式编程之lambda表达式
- Java 函数式编程和 lambda 表达式
- Java8 Lambda表达式 函数式编程
- 函数式编程之 Lambda 表达式的引出_Java8 实践
- Java8 Lambda表达式 函数式编程 方法引用
- Java - 函数式编程,Lambda 表达式
- 函数式编程--lambda表达式对比匿名内部类
- java8之Lambda表达式 2:内建函数式接口
- C# 函数式编程 —— 使用 Lambda 表达式编写递归函数
- Java8新特性Lambda表达式、函数式接口
- java8 Lambda表达式的新手上车指南(1)--基础语法和函数式接口
- Java8 新特性之一---------Lambda表达式和函数式接口
- Java学习笔记-Lambda表达式及內建函数式接口
- java8学习之Lambda表达式初步与函数式接口
- 【怎样写代码】函数式编程 -- Lambda表达式(四):Lambda表达式与Expression树
- java8新特性lambda表达式, 函数式接口以及Steam流和新的日期时间例子代码
- Java8 lambda表达式、函数式接口、方法引用
- 初探Java8 lamida表达式和 函数式编程