最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

lambda表達(dá)式解決java后臺分組排序過程解析

 更新時間:2019年10月11日 09:40:23   作者:德邦總管  
這篇文章主要介紹了lambda表達(dá)式解決java后臺分組排序過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

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

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

解決:

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

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

3.對集合里的key即日期進(jìn)行排序。

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

/**
   *
   * @param startTime 開始時間
   * @param endTime  結(jié)束時間
   * @param tbOrderExecutionExample 模糊查詢
   * @return 結(jié)果集
   * @throws ParseException 轉(zhuǎn)換異常
   */
  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;
  }

下面貼出生成給定起始日期生成連續(xù)日期的代碼:

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 設(shè)置此 Calendar 的時間
    calBegin.setTime(dBegin);
    Calendar calEnd = Calendar.getInstance();
    // 使用給定的 Date 設(shè)置此 Calendar 的時間
    calEnd.setTime(dEnd);
    // 測試此日期是否在指定日期之后
    while (dEnd.after(calBegin.getTime())) {
      // 根據(jù)日歷的規(guī)則,為給定的日歷字段添加或減去指定的時間量
      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;

  }

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java練手小項(xiàng)目實(shí)現(xiàn)一個項(xiàng)目管理系統(tǒng)

    Java練手小項(xiàng)目實(shí)現(xiàn)一個項(xiàng)目管理系統(tǒng)

    讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java實(shí)現(xiàn)一個項(xiàng)目管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平
    2021-10-10
  • Idea 配置國內(nèi) Maven 源的圖文教程

    Idea 配置國內(nèi) Maven 源的圖文教程

    這篇文章主要介紹了Idea 配置國內(nèi) Maven 源的教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-11-11
  • SpringBoot如何指定某些類優(yōu)先啟動

    SpringBoot如何指定某些類優(yōu)先啟動

    這篇文章主要介紹了SpringBoot如何指定某些類優(yōu)先啟動,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • Spring?AI?+?混元帶你實(shí)現(xiàn)企業(yè)級穩(wěn)定可部署的AI業(yè)務(wù)智能體

    Spring?AI?+?混元帶你實(shí)現(xiàn)企業(yè)級穩(wěn)定可部署的AI業(yè)務(wù)智能體

    我們深入探討了Spring?AI在智能體構(gòu)建中的實(shí)際應(yīng)用,特別是在企業(yè)環(huán)境中的價值與效能,通過逐步實(shí)現(xiàn)一個本地部署的智能體解決方案,我們不僅展示了Spring?AI的靈活性與易用性,還強(qiáng)調(diào)了它在推動AI技術(shù)與業(yè)務(wù)深度融合方面的潛力,感興趣的朋友一起看看吧
    2024-11-11
  • SpringBoot實(shí)現(xiàn)elasticsearch索引操作的代碼示例

    SpringBoot實(shí)現(xiàn)elasticsearch索引操作的代碼示例

    這篇文章主要給大家介紹了SpringBoot如何實(shí)現(xiàn)elasticsearch 索引操作,文中有詳細(xì)的代碼示例,感興趣的同學(xué)可以參考閱讀下
    2023-07-07
  • SpringMVC中的@RequestMapping注解解析

    SpringMVC中的@RequestMapping注解解析

    這篇文章主要介紹了SpringMVC中的@RequestMapping注解解析,SpringMVC使用@RequestMapping注解為控制器指定可以處理哪些?URL?請求,在控制器的類定義及方法定義處都可標(biāo)注@RequestMapping,需要的朋友可以參考下
    2023-12-12
  • Java靜態(tài)代理和動態(tài)代理的深入講解

    Java靜態(tài)代理和動態(tài)代理的深入講解

    這篇文章主要給大家介紹了關(guān)于Java靜態(tài)代理和動態(tài)代理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • java?實(shí)現(xiàn)獲取指定位置后的第一個數(shù)字

    java?實(shí)現(xiàn)獲取指定位置后的第一個數(shù)字

    這篇文章主要介紹了java?實(shí)現(xiàn)獲取指定位置后的第一個數(shù)字,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java并發(fā)編程之Semaphore(信號量)詳解及實(shí)例

    Java并發(fā)編程之Semaphore(信號量)詳解及實(shí)例

    這篇文章主要介紹了Java并發(fā)編程之Semaphore(信號量)詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • java學(xué)習(xí)之JasperReport踩坑

    java學(xué)習(xí)之JasperReport踩坑

    本篇文章介紹的是在JAVA學(xué)習(xí)中JasperReport遇到的坑以及解決辦法,有需要的朋友參考下吧。
    2018-01-01

最新評論

封丘县| 赤城县| 安塞县| 石家庄市| 东源县| 合水县| 大名县| 句容市| 砀山县| 罗田县| 邓州市| 丹巴县| 桂平市| 莆田市| 清河县| 贵定县| 孝感市| 大安市| 祁连县| 吕梁市| 佛坪县| 灵山县| 西乌珠穆沁旗| 胶州市| 大宁县| 新丰县| 沛县| 云林县| 衡山县| 庄河市| 海丰县| 灯塔市| 新丰县| 新晃| 乐都县| 高密市| 福贡县| 襄垣县| 石首市| 岚皋县| 武邑县|