アプリケーションラムダ式Javaの背景注文パケットに対処

要件:病院の情報によると、連続データベースの日付の開始日をチェックしてください。

Q:入院患者データベースの情報は、特定の日付からのデータの日数だけ、欠落したデータを、指定した日付範囲で、つまり、完全ではないかもしれません。

ソリューション:

1.私たちは、データベースと、いくつかのデータパケットプレス日付を見つけるために必要があります。

2.次に、値は、コレクションを挿入するヌルである日付の日付をキーとして存在していない、トラバース。

3.キー日付のコレクションをソートすること。

注:このグループ化し、ラムダ式ですべての新機能をソートJDK8

。1  / ** 
2       *
 3       * @param のstartTimeは、開始時間
 。4       * @param endTimeの終了時間
 。5       * @param tbOrderExecutionExampleあいまい検索
 。6       * @return 結果セット
 。7       * @throws はParseException変換例外を
 。8       * / 
9      プライベート地図<文字列、リスト<TBOrderExecution >> getListMap(@RequestParam(値= "のstartTime" =必須)文字列のstartTime、@RequestParam(値= "endTimeは"、=必須)文字列endTimeは、tBOrderExecutionExample tbOrderExecutionExample)スローはParseException {
 10          リスト<TBOrderExecution>リストに= tbDocOrderAdmissionService.selectByExample(tbOrderExecutionExample)。
11          // 获取时间段分组
12          のSimpleDateFormat sdf2 = 新しいてSimpleDateFormat( "YYYY-MM-DD" )。
13          リストの<string>リスト= DateRangUtil.getAllDate(のstartTime、endTimeは)。
14          地図<文字列リスト<TBOrderExecution >>地図= list.stream()を収集(Collectors.groupingBy(X - > sdf2.format(x.getYzjhksrq())))。
15          セットの<string>キー= map.keySet()。
16          地図<文字列、リスト<TBOrderExecution >>17          lists.forEach(ELE - > {
 18              であれば(!keys.contains(ELE)){
 19                  finalMap.put(ELE、NULL );
 20              }
 21  
22          });
23          地図<文字列、リスト<TBOrderExecution >> finalMaps = 新しいのLinkedHashMap <> ();
24          セットの<string>文字列= finalMap.keySet()。
25          リスト<文字列>日付= 新しい ArrayListを<> 文字列);
26          てDateTimeFormatterフォーマッタ= DateTimeFormatter.ofPattern( "YYYY-MM-DD" )。
27         Collections.sort(日付、新しいコンパレータの<string> (){
 28              にDateFormatのF = 新しいてSimpleDateFormat( "YYYY-MM-DD" );
 29  
30              @Override
 31              公共 のint 比較(String型O1、文字列O2){
 32                  のtry {
 33                      戻りf.parse(O1).compareTo(f.parse(O2));
 34                  } キャッチ(はParseException電子){
 35                       新しいはIllegalArgumentException(E);
 36                  }
 37              }
 38          });
39          dates.forEach(ELE - > {
 40              finalMap.forEach((キー、値) - > {
 41                  であれば(key.equals(ELE)){
 42                      finalMaps.put(ELE、値);
 43                  }
 44              });
 45          });
46          リターンfinalMaps。
47      }

与えられた開始日コードの下に掲示生成日間連続で発生しました:

1  公共の 静的リストの<string> getAllDate(文字列の開始、文字列の端部)がスローはParseException {
 2          一覧<日付> LDATE = 新規のArrayListを<> ();
3          のSimpleDateFormat SDF = 新しいてSimpleDateFormat( "YYYY-MM-DD" )。
4          日dBegin = sdf.parse(開始)
5          日DEND = sdf.parse(エンド)。
6  
7          lDate.add(dBegin)。
8          カレンダーcalBegin = Calendar.getInstance();
9          // 使用给定的日设置此カレンダー的时间
10         calBegin.setTime(dBegin);
 11          カレンダーcalend = Calendar.getInstance();
 12である         // このカレンダー日付設定された所定の時間
13である         calEnd.setTime(DEND);
 14          // この日付が指定された日付である場合、テスト後に
15          一方、(dEnd.after(calBegin.getTime())){
 16              // カレンダの規則に従って時間の量は、指定されたカレンダに指定されたフィールドを加算または減算
17。              calBegin.add(Calendar.DAY_OF_MONTH ,. 1 )、
 18は             LDATE .add(calBegin.getTime());
 19          }
 20は、          リストの<string> = allDate 新しい新規のArrayList <> ();
 21である          lDate.forEach(ELE - >allDate.add(sdf.format(ELE)))。
22          リターンallDate。
23  
24      }

 

おすすめ

転載: www.cnblogs.com/zhncnblogs/p/11647111.html
おすすめ