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

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

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      青草味的懶羊羊  
      List stream流
      • 使用Java8 stream流對List進行遍歷、過濾、查詢、去重、排序等,Java8提供了Stream(流)處理集合的關(guān)鍵抽象概念,它可以對集合進行的操作,可以執(zhí)行非常復(fù)雜的查找、過濾和映射數(shù)據(jù)等操作。Stream API 借助于同樣新出現(xiàn)的Lambda表達式,極大的提高編程效率和程序可讀性
      實例一
          Map<String,Object> map = new HashMap<String,Object>();
          map.put("name","張三");
          map.put("age","20");
          map.put("sex","男");
          Map<String,Object> map2 = new HashMap<String,Object>();
          map2.put("name","張四");
          map2.put("age","20");
          map2.put("sex","男");
          Map<String,Object> map3 = new HashMap<String,Object>();
          map3.put("name","張五");
          map3.put("age","20");
          map3.put("sex","男");
          List<Map<String,Object>> list = new ArrayList<Map<String,Object>();
          list.add(map);
          list.add(map2);l
          ist.add(map3);
      
      • .stream().map().collect()

      • 獲取list1中的所有對象的name,放入另一個list數(shù)組,注意,這個.map()方法返回的還是流對象,而不是返回map的意思

       List<Object> nameList = list.stream().map(item -> item.get("name")).collect(Collectors.toList());
       System.out.println(nameList);
       //運行結(jié)果
       //[張三, 張四, 張五]
      
      • .stream().filter().map().collect()

      • 使用filter方法,篩選list1中的所有Bean對象,留下id屬于ids中的Bean對象,并把它們的name字段轉(zhuǎn)成一個list

      //刪除一個,便于看出差別來
       nameList.remove(0);
      List<Object> name =list.stream().filter(item -> nameList.contains(item.get("name"))).map(item -> item.get("name")).collect(Collectors.toList());
      System.out.println(name);
      //運行結(jié)果
      //[張四, 張五]
      
      • .stream().collect()
      • 把list1中的所有Bean對象轉(zhuǎn)成map,其中,id是map的key,Bean對象本身是map的value
      Map<Object,Object> changeMap = list.stream().collect(Collectors.toMap(item -> item.get("name"),e->e));
      System.out.println(changeMap);
      //運行結(jié)果
      //{張四={sex=男, name=張四, age=20}, 張三={sex=男, name=張三, age=20}, 張五={sex=男, name=張五, age=20}}
      
      • .stream().filter().collect()
      • 按條件過濾后生成map,與上方的filter類似,只保留ids中有的id的bean對象
      Map<Object,Object> changeMap2 = list.stream().filter(item -> nameList.contains(item.get("name"))).collect(Collectors.toMap(item -> item.get("name"),e -> e));
      System.out.println(changeMap2);
      //運行結(jié)果
      //{張四={sex=男, name=張四, age=20}, 張五={sex=男, name=張五, age=20}}
      
      實例二
      package com.test.entity;
      import lombok.Data;
      @Data
      public class Student {
          /**
           * id 主鍵
           */
          private Integer Id;
      
          /**
           * 姓名
           */
          private String name;
      
          /**
           * 年齡
           */
          private Integer age;
      
          /**
           * 年級
           */
          private String grade;
      
          /**
           * 班級
           */
          private String classNmae;
      
          public Student(Integer id, String name, Integer age, String grade, String classNmae) {
              Id = id;
              this.name = name;
              this.age = age;
              this.grade = grade;
              this.classNmae = classNmae;
          }
      }
      
      List<Student> studentList = new ArrayList<>(); studentList.add(new Student(3,"小明",16,"高一","3班")); studentList.add(new Student(6,"小李",18,"高三","1班")); studentList.add(new Student(9,"小王",16,"高一","2班")); studentList.add(new Student(3,"小徐",17,"高二","4班")); studentList.add(new Student(5,"小馬",19,"高三","6班"));
      • 使用 forEach()遍歷List
      studentList.forEach(System.out::println);
      //運行結(jié)果
      /**
      Student(Id=3, name=小明, age=16, grade=高一, classNmae=3班)
      Student(Id=6, name=小李, age=18, grade=高三, classNmae=1班)
      Student(Id=9, name=小王, age=16, grade=高一, classNmae=2班)
      Student(Id=3, name=小徐, age=17, grade=高二, classNmae=4班)
      Student(Id=5, name=小馬, age=19, grade=高三, classNmae=6班) **/
      
      • findAny() 和 findFirst()
      • findFirst() 和 findAny() 都是獲取列表中的第一條數(shù)據(jù),但是findAny()操作,返回的元素是不確定的,對于同一個列表多次調(diào)用findAny()有可能會返回不同的值。使用findAny()是為了更高效的性能。如果是數(shù)據(jù)較少,串行地情況下,一般會返回第一個結(jié)果,如果是并行(parallelStream并行流)的情況,那就不能確保是第一個。
      System.out.println("====================獲取姓名為'小徐'的學(xué)生信息,如果沒有找到則返回null====================");
      Student selectOne = studentList.stream().filter(stu -> stu.getName().equals("小徐")).findAny().orElse(null);
      Student selectTwo= studentList.stream().filter(stu -> stu.getName().equals("小徐")).findAny().get();
      System.out.println(selectOne);
      System.out.println(selectTwo);
      //運行結(jié)果
      //Student(Id=3, name=小徐, age=17, grade=高二, classNmae=4班)
      //Student(Id=3, name=小徐, age=17, grade=高二, classNmae=4班)
      
      • 使用 distinct() 方法可以去除重復(fù)的數(shù)據(jù)。
      • 獲取年紀列表,去除重復(fù)的數(shù)據(jù)
       System.out.println("====================對list去重====================");
      List<String> gradeList = studentList.stream().map(stu -> stu.getGrade()).distinct().collect(Collectors.toList());
      gradeList.forEach(System.out::println);
      //運行結(jié)果
      //高一
      //高三
      //高二
      
      • sorted()排序
       System.out.println("====================對list排序====================");
      System.out.println("====================升序(默認)====================");
      List<Student> ascList = studentList.stream().sorted(Comparator.comparing(Student::getId)).collect(Collectors.toList());
      ascList.forEach(System.out::println);
      System.out.println("====================降序====================");
      List<Student> descList = studentList.stream().sorted(Comparator.comparing(Student::getId).reversed()).collect(Collectors.toList());
      descList.forEach(System.out::println);
      System.out.println("====================多條件降序排序====================");
      List<Student> descConList = studentList.stream().sorted(Comparator.comparing(Student::getId).reversed().thenComparing(Comparator.comparing(Student::getAge)).reversed()).collect(Collectors.toList());
      descConList.forEach(System.out::println);
      //運行結(jié)果
      ====================對list排序====================
      ====================升序(默認)====================
      Student(Id=3, name=小明, age=16, grade=高一, classNmae=3班)
      Student(Id=3, name=小徐, age=17, grade=高二, classNmae=4班)
      Student(Id=5, name=小馬, age=19, grade=高三, classNmae=6班)
      Student(Id=6, name=小李, age=18, grade=高三, classNmae=1班)
      Student(Id=9, name=小王, age=16, grade=高一, classNmae=2班)
      ====================降序====================
      Student(Id=9, name=小王, age=16, grade=高一, classNmae=2班)
      Student(Id=6, name=小李, age=18, grade=高三, classNmae=1班)
      Student(Id=5, name=小馬, age=19, grade=高三, classNmae=6班)
      Student(Id=3, name=小明, age=16, grade=高一, classNmae=3班)
      Student(Id=3, name=小徐, age=17, grade=高二, classNmae=4班)
      ====================多條件降序排序====================
      Student(Id=3, name=小徐, age=17, grade=高二, classNmae=4班)
      Student(Id=3, name=小明, age=16, grade=高一, classNmae=3班)
      Student(Id=5, name=小馬, age=19, grade=高三, classNmae=6班)
      Student(Id=6, name=小李, age=18, grade=高三, classNmae=1班)
      Student(Id=9, name=小王, age=16, grade=高一, classNmae=2班)
      
      • groupingBy對list分組
      • 根據(jù)年級分組
       System.out.println("====================對List分組====================");
      Map<String,List<Student>> groupStu = studentList.stream().collect(Collectors.groupingBy(Student::getGrade));
      groupStu.forEach((key,value) ->{
          System.out.println("KEY:"+key);
          value.forEach(System.out::println);
          System.out.println("*************************");
      });
      System.out.println(groupStu);
      //運行結(jié)果
      ====================對List分組====================
      KEY:高三
      Student(Id=6, name=小李, age=18, grade=高三, classNmae=1班)
      Student(Id=5, name=小馬, age=19, grade=高三, classNmae=6班)
      *************************
      KEY:高二
      Student(Id=3, name=小徐, age=17, grade=高二, classNmae=4班)
      *************************
      KEY:高一
      Student(Id=3, name=小明, age=16, grade=高一, classNmae=3班)
      Student(Id=9, name=小王, age=16, grade=高一, classNmae=2班)
      *************************
      {高三=[Student(Id=6, name=小李, age=18, grade=高三, classNmae=1班), Student(Id=5, name=小馬, age=19, grade=高三, classNmae=6班)], 高二=[Student(Id=3, name=小徐, age=17, grade=高二, classNmae=4班)], 高一=[Student(Id=3, name=小明, age=16, grade=高一, classNmae=3班), Student(Id=9, name=小王, age=16, grade=高一, classNmae=2班)]}
      
      整理自

      https://blog.csdn.net/BHSZZY/article/details/122860048
      https://blog.csdn.net/qq_42021376/article/details/109141670

      posted on 2022-10-27 15:19  青草味的懶羊羊  閱讀(579)  評論(0)    收藏  舉報
       
      主站蜘蛛池模板: 国产强奷在线播放免费| 精品久久综合日本久久网| 九色综合狠狠综合久久| 国产人妻无码一区二区三区18| 国产精品视频一区二区三区不卡| 国产精品午夜无码AV天美传媒| 麻豆精产国品一二三区区| 亚洲国产精品一区在线看| 精品人妻午夜福利一区二区| 色欲狠狠躁天天躁无码中文字幕 | 乱60一70归性欧老妇| 亚洲国产av久久久| 久久综合亚洲鲁鲁九月天| 国产在线播放专区av| 慈利县| av色国产色拍| 日韩精品无码一区二区视频| av无码精品一区二区三区四区 | 东京热大乱系列无码| 六枝特区| 中文午夜乱理片无码| 无码国内精品人妻少妇| 亚洲天堂在线免费| 国产日韩入口一区二区| 极品少妇的粉嫩小泬视频| 久久亚洲国产精品五月天| 亚洲人成网网址在线看| 人妻少妇精品视频专区| 开心五月婷婷综合网站| 婷婷精品国产亚洲av在线观看| 久久综合狠狠综合久久激情| 一边捏奶头一边高潮视频| 亚洲精品一区二区三区蜜臀| 亚洲精品动漫免费二区| 亚洲综合精品成人| 最新国产AV最新国产在钱| 成人午夜免费无码视频在线观看| 男女猛烈激情xx00免费视频| 五华县| 无码人妻精品一区二区三区下载| 亚洲日本va午夜中文字幕久久|