欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

解決:

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

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

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

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

/**
   *
   * @param startTime 開(kāi)始時(shí)間
   * @param endTime  結(jié)束時(shí)間
   * @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);
    //獲取時(shí)間段分組
    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 的時(shí)間
    calBegin.setTime(dBegin);
    Calendar calEnd = Calendar.getInstance();
    // 使用給定的 Date 設(shè)置此 Calendar 的時(shí)間
    calEnd.setTime(dEnd);
    // 測(cè)試此日期是否在指定日期之后
    while (dEnd.after(calBegin.getTime())) {
      // 根據(jù)日歷的規(guī)則,為給定的日歷字段添加或減去指定的時(shí)間量
      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;

  }

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

相關(guān)文章

  • springboot配置http跳轉(zhuǎn)https的過(guò)程

    springboot配置http跳轉(zhuǎn)https的過(guò)程

    SSL是為網(wǎng)絡(luò)通信提供安全以及保證數(shù)據(jù)完整性的的一種安全協(xié)議,SSL在網(wǎng)絡(luò)傳輸層對(duì)網(wǎng)絡(luò)連接進(jìn)行加密,這篇文章主要介紹了springboot配置http跳轉(zhuǎn)https的過(guò)程,需要的朋友可以參考下
    2023-04-04
  • 老生常談 MyBatis 復(fù)雜查詢

    老生常談 MyBatis 復(fù)雜查詢

    這篇文章主要介紹了 MyBatis 復(fù)雜查詢的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • spring boot使用WebClient調(diào)用HTTP服務(wù)代碼示例

    spring boot使用WebClient調(diào)用HTTP服務(wù)代碼示例

    這篇文章主要介紹了spring boot使用WebClient調(diào)用HTTP服務(wù)代碼示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 使用springboot+druid雙數(shù)據(jù)源動(dòng)態(tài)配置操作

    使用springboot+druid雙數(shù)據(jù)源動(dòng)態(tài)配置操作

    這篇文章主要介紹了使用springboot+druid雙數(shù)據(jù)源動(dòng)態(tài)配置的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 手寫redis@Cacheable注解?支持過(guò)期時(shí)間設(shè)置方式

    手寫redis@Cacheable注解?支持過(guò)期時(shí)間設(shè)置方式

    這篇文章主要介紹了手寫redis@Cacheable注解?支持過(guò)期時(shí)間設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • MyEclipse+Tomcat配置詳解(圖文)

    MyEclipse+Tomcat配置詳解(圖文)

    這篇文章主要介紹了MyEclipse+Tomcat配置詳解(圖文),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • java開(kāi)發(fā)之SQL語(yǔ)句中DATE_FORMAT函數(shù)舉例詳解

    java開(kāi)發(fā)之SQL語(yǔ)句中DATE_FORMAT函數(shù)舉例詳解

    要將日期值格式化為特定格式,請(qǐng)使用DATE_FORMAT函數(shù),下面這篇文章主要給大家介紹了關(guān)于java開(kāi)發(fā)之SQL語(yǔ)句中DATE_FORMAT函數(shù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • 解讀ResultSet的遍歷方法

    解讀ResultSet的遍歷方法

    這篇文章主要介紹了ResultSet的遍歷方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Java編程通過(guò)list接口實(shí)現(xiàn)數(shù)據(jù)的增刪改查代碼示例

    Java編程通過(guò)list接口實(shí)現(xiàn)數(shù)據(jù)的增刪改查代碼示例

    這篇文章是介紹Java編程基礎(chǔ)方面的內(nèi)容,涉及l(fā)ist接口的操作,通過(guò)list接口實(shí)現(xiàn)對(duì)數(shù)據(jù)的增刪改查的相關(guān)代碼,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • swagger?@ApiModel添加實(shí)體類不生效的解決

    swagger?@ApiModel添加實(shí)體類不生效的解決

    這篇文章主要介紹了swagger?@ApiModel添加實(shí)體類不生效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
    2022-01-01

最新評(píng)論