<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Java stream sorted自定義排序規則實現多字段排序

      ??Stream 提供了豐富的操作(中間操作和終端操作)集合元素的輪子,但Stream流操作不影響原始集合數據,執行結果是一個新的集合對象。在《Java stream sorted使用 Comparator 進行多字段排序》中,小編Wiener介紹了使用Java Stream流排序器Comparator對List集合進行多字段排序的方法,包括復雜實體對象多字段升降序排序方法,本文介紹兩個新的排序方法:

      ??1. 使用lambda表達式自定義排序規則;

      ??2. 使用匿名內部類重寫Comparator方法以定義排序規則。

      ??測試數據中,類繼續使用《Java stream sorted使用 Comparator 進行多字段排序》中的UserDTO,如下所示:

      private static List<UserDTO> getUsers() {
          List<UserDTO> users = new ArrayList<>();
          users.add(new UserDTO(1L, "bWiener", 28, true));
          users.add(new UserDTO(2L, "張莉", 17, false));
          users.add(new UserDTO(3L, "李雪", 20, true));
          users.add(new UserDTO(6L, "王二", 27, true));
          users.add(new UserDTO(7L, "店小二", 27, false));
          users.add(new UserDTO(8L, "樓蘭胡楊", 21, true));
          users.add(new UserDTO(9L, "aPrice", 28, true));
          return users;
      }
      

      使用lambda表達式實現排序

      ??lambda表達式又稱為函數式編程,匿名函數可以將匿名函數代碼塊作為請求參數,語法更加簡潔清爽,代碼風格更加緊湊。使用lambda表達式修改sorted定義排序規則:

          /**
           * 使用lambda表達式定義排序規則
           * 先按姓名降序,若年齡相同則按姓名降序
           */
          private static void defineOrderByLambda() {
              List<UserDTO> list = getUsers();
              list.stream().sorted((e1, e2) -> {
                  if (e2.getAge().equals(e1.getAge())) {
                      return e2.getName().compareTo(e1.getName());
                  }
                  return Integer.compare(e2.getAge(), e1.getAge());
              }).forEach(System.out::println);
          }
      

      匿名內部類重寫Comparator方法實現排序

      ??先創建Comparator接口的匿名內部類對象,然后在匿名內部類對象中重寫compare方法,以實現排序。下述案例排序規則:先以年齡降序排列,再以姓名降序排列:

          /**
           * 使用匿名內部類重寫Comparator方法以定義排序規則
           */
          private static void defineOrderByInnerClass() {
              List<UserDTO> list = getUsers();
              list.stream().sorted(new Comparator<UserDTO>() {
                  @Override
                  public int compare(UserDTO e1, UserDTO e2) {
                      if (e2.getAge().equals(e1.getAge())) {
                          return e2.getName().compareTo(e1.getName());
                      }
                      return Integer.compare(e2.getAge(), e1.getAge());
                  }
              }).forEach(System.out::println);
          }
      

      ??在Stream sorted() 中指定按照實體類的某個屬性進行排序時,默認的排序規則是升序,如果需要降序,就需要調整對象的位置,使用對象2與對象1進行比較即可實現降序需求!

      ??基于如下測試用例進行驗證,發現這兩種排序方式都好用:

          public static void main(String[] args) {
              defineOrderByLambda();
              System.out.println("----------");
              defineOrderByInnerClass();
          }
      

      ??執行結果:

      UserDTO(id=1, name=bWiener, age=28, isBoy=true)
      UserDTO(id=9, name=aPrice, age=28, isBoy=true)
      UserDTO(id=6, name=王二, age=27, isBoy=true)
      UserDTO(id=7, name=店小二, age=27, isBoy=false)
      UserDTO(id=8, name=樓蘭胡楊, age=21, isBoy=true)
      UserDTO(id=3, name=李雪, age=20, isBoy=true)
      UserDTO(id=2, name=張莉, age=17, isBoy=false)
      ----------
      UserDTO(id=1, name=bWiener, age=28, isBoy=true)
      UserDTO(id=9, name=aPrice, age=28, isBoy=true)
      UserDTO(id=6, name=王二, age=27, isBoy=true)
      UserDTO(id=7, name=店小二, age=27, isBoy=false)
      UserDTO(id=8, name=樓蘭胡楊, age=21, isBoy=true)
      UserDTO(id=3, name=李雪, age=20, isBoy=true)
      UserDTO(id=2, name=張莉, age=17, isBoy=false)
      

      結束語

      ??文章到這里就結束了,看完之后你有什么想法想要跟大家分享呢?評論區在等著你!

      posted @ 2023-03-20 09:26  樓蘭胡楊  閱讀(7199)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 华人在线亚洲欧美精品| 亚洲国产成人久久77| 撩起胸让我的?蹭来蹭去| 亚洲精品一二三伦理中文| 中文字幕日韩一区二区不卡| 18禁成人免费无码网站| 久久天天躁狠狠躁夜夜不卡| 精品国偷自产在线视频99| 香蕉久久精品日日躁夜夜躁夏| 任我爽精品视频在线播放| 四虎永久免费很黄的视频| 大香网伊人久久综合网2020| 亚洲欧洲精品日韩av| 综合久久婷婷综合久久| 国产美女高潮流白浆视频| 夜鲁鲁鲁夜夜综合视频欧美| 亚洲国产日韩一区三区| 久久道精品一区二区三区| 久久久精品人妻一区二区三区| 毛片亚洲AV无码精品国产午夜| 91精品国产综合久蜜臀| 亚洲av永久无码精品秋霞电影影院| 亚洲欧美高清在线精品一区二区 | 国产精品一码在线播放| 亚洲人成电影网站色mp4| 无码精品人妻一区二区三区湄公河| 国产精品进线69影院| 美女把尿囗扒开让男人添| av综合网男人的天堂| 久久精品夜色噜噜亚洲aa| 欧美乱妇高清无乱码免费| 麻豆妓女爽爽一区二区三 | 国产农村老熟女国产老熟女| 国产成人高清亚洲综合| 久久天堂综合亚洲伊人HD妓女 | 白玉县| 精品国产粉嫩一区二区三区| 精品无码久久久久久尤物| 日韩精品一区二区三区在线观看| 成人精品老熟妇一区二区| 四虎永久精品在线视频|