中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

lambda表達式如何解決java后臺分組排序

發布時間:2021-07-28 14:25:22 來源:億速云 閱讀:702 作者:小新 欄目:編程語言

小編給大家分享一下lambda表達式如何解決java后臺分組排序,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

需求:按照起始日期查詢出數據庫里一段連續日期的住院信息。

問題:數據庫里的住院信息可能不是完整的,也就是在給出的日期區間里只有若干天的數據,缺少某些日期的數據。

解決:

1.需要我們先按日期分組查出數據庫里有的數據;

2.然后遍歷日期,將不存在的日期以日期為key,value為null插入集合里;

3.對集合里的key即日期進行排序。

注:這里分組和排序都用JDK8的新特性lambda表達式

/**
   *
   * @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;

  }

以上是“lambda表達式如何解決java后臺分組排序”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

崇文区| 大方县| 阿鲁科尔沁旗| 东阳市| 沭阳县| 霍林郭勒市| 瑞昌市| 宜黄县| 巴彦淖尔市| 津南区| 夏津县| 郓城县| 文山县| 邮箱| 抚松县| 固始县| 双江| 封丘县| 杂多县| 二连浩特市| 丹东市| 佛教| 卢湾区| 高青县| 东平县| 西和县| 道孚县| 筠连县| 阳江市| 衡南县| 临澧县| 大宁县| 华亭县| 越西县| 常山县| 二手房| 应城市| 娱乐| 苏州市| 平远县| 丰镇市|