zoukankan      html  css  js  c++  java
  • lambda表达式在解决java后台分组排序时的应用

    需求:按照起始日期查询出数据库里一段连续日期的住院信息。

    问题:数据库里的住院信息可能不是完整的,也就是在给出的日期区间里只有若干天的数据,缺少某些日期的数据。

    解决:

    1.需要我们先按日期分组查出数据库里有的数据;

    2.然后遍历日期,将不存在的日期以日期为key,value为null插入集合里;

    3.对集合里的key即日期进行排序。

    注:这里分组和排序都用JDK8的新特性lambda表达式

     1 /**
     2      *
     3      * @param startTime 开始时间
     4      * @param endTime   结束时间
     5      * @param tbOrderExecutionExample 模糊查询
     6      * @return 结果集
     7      * @throws ParseException 转换异常
     8      */
     9     private Map<String, List<TBOrderExecution>> getListMap(@RequestParam(value = "startTime", required = false) String startTime, @RequestParam(value = "endTime", required = false) String endTime, TBOrderExecutionExample tbOrderExecutionExample) throws ParseException {
    10         List<TBOrderExecution> list = tbDocOrderAdmissionService.selectByExample(tbOrderExecutionExample);
    11         //获取时间段分组
    12         SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
    13         List<String> lists = DateRangUtil.getAllDate(startTime, endTime);
    14         Map<String, List<TBOrderExecution>> map = list.stream().collect(Collectors.groupingBy(x -> sdf2.format(x.getYzjhksrq())));
    15         Set<String> keys = map.keySet();
    16         Map<String, List<TBOrderExecution>> finalMap = map;
    17         lists.forEach(ele -> {
    18             if (!keys.contains(ele)) {
    19                 finalMap.put(ele, null);
    20             }
    21 
    22         });
    23         Map<String, List<TBOrderExecution>> finalMaps = new LinkedHashMap<>();
    24         Set<String> strings = finalMap.keySet();
    25         List<String> dates = new ArrayList<>(strings);
    26         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    27         Collections.sort(dates, new Comparator<String>() {
    28             DateFormat f = new SimpleDateFormat("yyyy-MM-dd");
    29 
    30             @Override
    31             public int compare(String o1, String o2) {
    32                 try {
    33                     return f.parse(o1).compareTo(f.parse(o2));
    34                 } catch (ParseException e) {
    35                     throw new IllegalArgumentException(e);
    36                 }
    37             }
    38         });
    39         dates.forEach(ele -> {
    40             finalMap.forEach((key, value) -> {
    41                 if (key.equals(ele)) {
    42                     finalMaps.put(ele, value);
    43                 }
    44             });
    45         });
    46         return finalMaps;
    47     }

    下面贴出生成给定起始日期生成连续日期的代码:

     1 public static List<String> getAllDate(String start, String end) throws ParseException {
     2         List<Date> lDate = new ArrayList<>();
     3         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
     4         Date dBegin = sdf.parse(start);
     5         Date dEnd = sdf.parse(end);
     6 
     7         lDate.add(dBegin);
     8         Calendar calBegin = Calendar.getInstance();
     9         // 使用给定的 Date 设置此 Calendar 的时间
    10         calBegin.setTime(dBegin);
    11         Calendar calEnd = Calendar.getInstance();
    12         // 使用给定的 Date 设置此 Calendar 的时间
    13         calEnd.setTime(dEnd);
    14         // 测试此日期是否在指定日期之后
    15         while (dEnd.after(calBegin.getTime())) {
    16             // 根据日历的规则,为给定的日历字段添加或减去指定的时间量
    17             calBegin.add(Calendar.DAY_OF_MONTH, 1);
    18             lDate.add(calBegin.getTime());
    19         }
    20         List<String> allDate = new ArrayList<>();
    21         lDate.forEach(ele -> allDate.add(sdf.format(ele)));
    22         return allDate;
    23 
    24     }
  • 相关阅读:
    建立可扩展的silverlight应用框架 step3
    建立可扩展的silverlight应用框架 step7 final
    Silverlight入门:第三部分 数据访问
    建立可扩展的silverlight 应用框架 step6:整理导航模块“LeftNav”
    Silverlight入门:第一部分 开发工具与程序入门
    [Silverlight入门系列]使用MVVM模式(8):ViewModel进一步分离出Services
    Silverlight WCF RIA服务 (三)创建一个RIA Services Solution
    Silverlight入门
    Silverlight入门:第五部分 整合其它控件
    Silverlight WCF RIA服务(十一)数据 1
  • 原文地址:https://www.cnblogs.com/zhncnblogs/p/11647111.html
Copyright © 2011-2022 走看看