mbda表現はjavaバックグラウンドのパケット順序付け過程の解析を解決します。


需要:スタートの日付によって、データベースの中の一連の日付の入院情報を調べます。
問題:データベース内の入院情報は完全ではないかもしれません。つまり、提供された日付の区間には何日間のデータしかないので、ある日付のデータが足りません。
解決:
1.まず日付別にグループ分けしてデータベースにあるデータを調べてみたいです。
2.日付を巡回して、存在しない日付を日付でkeyとし、valueをnullとしてセットに挿入する。
3.集合の中のkeyつまり日付を並べ替える。
注:ここでのグループ化と順序付けは、JDK 8の新しい特性のlamband表現を使用します。

/**
   *
   * @param startTime     
   * @param endTime      
   * @param tbOrderExecutionExample     
   * @return    
   * @throws ParseException     
   */
  private Map<String, List<TBOrderExecution>> getListMap(@RequestParam(value = "startTime", required = false) String startTime, @RequestParam(value = "endTime", required = false) String endTime, TBOrderExecutionExample tbOrderExecutionExample) throws ParseException {
    List<TBOrderExecution> list = tbDocOrderAdmissionService.selectByExample(tbOrderExecutionExample);
    //       
    SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
    List<String> lists = DateRangUtil.getAllDate(startTime, endTime);
    Map<String, List<TBOrderExecution>> map = list.stream().collect(Collectors.groupingBy(x -> sdf2.format(x.getYzjhksrq())));
    Set<String> keys = map.keySet();
    Map<String, List<TBOrderExecution>> finalMap = map;
    lists.forEach(ele -> {
      if (!keys.contains(ele)) {
        finalMap.put(ele, null);
      }

    });
    Map<String, List<TBOrderExecution>> finalMaps = new LinkedHashMap<>();
    Set<String> strings = finalMap.keySet();
    List<String> dates = new ArrayList<>(strings);
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
    Collections.sort(dates, new Comparator<String>() {
      DateFormat f = new SimpleDateFormat("yyyy-MM-dd");

      @Override
      public int compare(String o1, String o2) {
        try {
          return f.parse(o1).compareTo(f.parse(o2));
        } catch (ParseException e) {
          throw new IllegalArgumentException(e);
        }
      }
    });
    dates.forEach(ele -> {
      finalMap.forEach((key, value) -> {
        if (key.equals(ele)) {
          finalMaps.put(ele, value);
        }
      });
    });
    return finalMaps;
  }
下には、与えられた開始日として生まれた日付のコードを貼り付けます。

public static List<String> getAllDate(String start, String end) throws ParseException {
    List<Date> lDate = new ArrayList<>();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date dBegin = sdf.parse(start);
    Date dEnd = sdf.parse(end);

    lDate.add(dBegin);
    Calendar calBegin = Calendar.getInstance();
    //       Date     Calendar    
    calBegin.setTime(dBegin);
    Calendar calEnd = Calendar.getInstance();
    //       Date     Calendar    
    calEnd.setTime(dEnd);
    //               
    while (dEnd.after(calBegin.getTime())) {
      //        ,                   
      calBegin.add(Calendar.DAY_OF_MONTH, 1);
      lDate.add(calBegin.getTime());
    }
    List<String> allDate = new ArrayList<>();
    lDate.forEach(ele -> allDate.add(sdf.format(ele)));
    return allDate;

  }
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。