<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 325,  comments - 25,  trackbacks - 0
    public class TestStreamAPI2 {
     
     List<Employee> emps = Arrays.asList(
       new Employee(102, "李四", 59, 6666.66, Status.BUSY),
       new Employee(101, "張三", 18, 9999.99, Status.FREE),
       new Employee(103, "王五", 28, 3333.33, Status.VOCATION),
       new Employee(104, "趙六", 8, 7777.77, Status.BUSY),
       new Employee(104, "趙六", 8, 7777.77, Status.FREE),
       new Employee(104, "趙六", 8, 7777.77, Status.FREE),
       new Employee(105, "田七", 38, 5555.55, Status.BUSY)
     );
     
     //3. 終止操作
     /*
      allMatch——檢查是否匹配所有元素
      anyMatch——檢查是否至少匹配一個元素
      noneMatch——檢查是否沒有匹配的元素
      findFirst——返回第一個元素
      findAny——返回當前流中的任意元素
      count——返回流中元素的總個數
      max——返回流中最大值
      min——返回流中最小值
      */
     @Test
     public void test1(){
       boolean bl = emps.stream()
        .allMatch((e) -> e.getStatus().equals(Status.BUSY));
       
       System.out.println(bl);
       
       boolean bl1 = emps.stream()
        .anyMatch((e) -> e.getStatus().equals(Status.BUSY));
       
       System.out.println(bl1);
       
       boolean bl2 = emps.stream()
        .noneMatch((e) -> e.getStatus().equals(Status.BUSY));
       
       System.out.println(bl2);
     }
     
     @Test
     public void test2(){
      Optional<Employee> op = emps.stream()
       .sorted((e1, e2) -> Double.compare(e1.getSalary(), e2.getSalary()))
       .findFirst();
      
      System.out.println(op.get());
      
      System.out.println("--------------------------------");
      
      Optional<Employee> op2 = emps.parallelStream()
       .filter((e) -> e.getStatus().equals(Status.FREE))
       .findAny();
      
      System.out.println(op2.get());
     }
     
     @Test
     public void test3(){
      long count = emps.stream()
           .filter((e) -> e.getStatus().equals(Status.FREE))
           .count();
      
      System.out.println(count);
      
      Optional<Double> op = emps.stream()
       .map(Employee::getSalary)
       .max(Double::compare);
      
      System.out.println(op.get());
      
      Optional<Employee> op2 = emps.stream()
       .min((e1, e2) -> Double.compare(e1.getSalary(), e2.getSalary()));
      
      System.out.println(op2.get());
     }
     
     //注意:流進行了終止操作后,不能再次使用
     @Test
     public void test4(){
      Stream<Employee> stream = emps.stream()
       .filter((e) -> e.getStatus().equals(Status.FREE));
      
      long count = stream.count();
      
      stream.map(Employee::getSalary)
       .max(Double::compare);
     }
    }


    public class TestStreamAPI3 {
     
     List<Employee> emps = Arrays.asList(
       new Employee(102, "李四", 79, 6666.66, Status.BUSY),
       new Employee(101, "張三", 18, 9999.99, Status.FREE),
       new Employee(103, "王五", 28, 3333.33, Status.VOCATION),
       new Employee(104, "趙六", 8, 7777.77, Status.BUSY),
       new Employee(104, "趙六", 8, 7777.77, Status.FREE),
       new Employee(104, "趙六", 8, 7777.77, Status.FREE),
       new Employee(105, "田七", 38, 5555.55, Status.BUSY)
     );
     
     //3. 終止操作
     /*
      歸約
      reduce(T identity, BinaryOperator) / reduce(BinaryOperator) ——可以將流中元素反復結合起來,得到一個值。
      */
     @Test
     public void test1(){
      List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
      
      Integer sum = list.stream()
       .reduce(0, (x, y) -> x + y);
      
      System.out.println(sum);
      
      System.out.println("----------------------------------------");
      
      Optional<Double> op = emps.stream()
       .map(Employee::getSalary)
       .reduce(Double::sum);
      
      System.out.println(op.get());
     }
     
     //需求:搜索名字中 “六” 出現的次數
     @Test
     public void test2(){
      Optional<Integer> sum = emps.stream()
       .map(Employee::getName)
       .flatMap(TestStreamAPI1::filterCharacter)
       .map((ch) -> {
        if(ch.equals('六'))
         return 1;
        else
         return 0;
       }).reduce(Integer::sum);
      
      System.out.println(sum.get());
     }
     
     //collect——將流轉換為其他形式。接收一個 Collector接口的實現,用于給Stream中元素做匯總的方法
     @Test
     public void test3(){
      List<String> list = emps.stream()
       .map(Employee::getName)
       .collect(Collectors.toList());
      
      list.forEach(System.out::println);
      
      System.out.println("----------------------------------");
      
      Set<String> set = emps.stream()
       .map(Employee::getName)
       .collect(Collectors.toSet());
      
      set.forEach(System.out::println);

      System.out.println("----------------------------------");
      
      HashSet<String> hs = emps.stream()
       .map(Employee::getName)
       .collect(Collectors.toCollection(HashSet::new));
      
      hs.forEach(System.out::println);
     }
     
     @Test
     public void test4(){
      Optional<Double> max = emps.stream()
       .map(Employee::getSalary)
       .collect(Collectors.maxBy(Double::compare));
      
      System.out.println(max.get());
      
      Optional<Employee> op = emps.stream()
       .collect(Collectors.minBy((e1, e2) -> Double.compare(e1.getSalary(), e2.getSalary())));
      
      System.out.println(op.get());
      
      Double sum = emps.stream()
       .collect(Collectors.summingDouble(Employee::getSalary));
      
      System.out.println(sum);
      
      Double avg = emps.stream()
       .collect(Collectors.averagingDouble(Employee::getSalary));
      
      System.out.println(avg);
      
      Long count = emps.stream()
       .collect(Collectors.counting());
      
      System.out.println(count);
      
      System.out.println("--------------------------------------------");
      
      DoubleSummaryStatistics dss = emps.stream()
       .collect(Collectors.summarizingDouble(Employee::getSalary));
      
      System.out.println(dss.getMax());
     }
     
     //分組
     @Test
     public void test5(){
      Map<Status, List<Employee>> map = emps.stream()
       .collect(Collectors.groupingBy(Employee::getStatus));
      
      System.out.println(map);
     }
     
     //多級分組
     @Test
     public void test6(){
      Map<Status, Map<String, List<Employee>>> map = emps.stream()
       .collect(Collectors.groupingBy(Employee::getStatus, Collectors.groupingBy((e) -> {
        if(e.getAge() >= 60)
         return "老年";
        else if(e.getAge() >= 35)
         return "中年";
        else
         return "成年";
       })));
      
      System.out.println(map);
     }
     
     //分區
     @Test
     public void test7(){
      Map<Boolean, List<Employee>> map = emps.stream()
       .collect(Collectors.partitioningBy((e) -> e.getSalary() >= 5000));
      
      System.out.println(map);
     }
     
     //
     @Test
     public void test8(){
      String str = emps.stream()
       .map(Employee::getName)
       .collect(Collectors.joining("," , "----", "----"));
      
      System.out.println(str);
     }
     
     @Test
     public void test9(){
      Optional<Double> sum = emps.stream()
       .map(Employee::getSalary)
       .collect(Collectors.reducing(Double::sum));
      
      System.out.println(sum.get());
     }
    }

    posted on 2018-03-06 08:40 長春語林科技 閱讀(517) 評論(0)  編輯  收藏 所屬分類: java8
    <2018年3月>
    25262728123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

     

    長春語林科技歡迎您!

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    收藏夾

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久久久久夜精品精品免费啦| 免费无码又爽又刺激一高潮| 亚洲天堂在线视频| 成年女人A毛片免费视频| 久久精品国产亚洲精品2020| 成人免费男女视频网站慢动作| 无码精品人妻一区二区三区免费| 国产精品亚洲片在线观看不卡 | 亚洲人成7777影视在线观看| 一个人看www在线高清免费看| 国产亚洲精品第一综合| 亚洲avav天堂av在线不卡| 免费看大黄高清网站视频在线| CAOPORN国产精品免费视频| 亚洲中文字幕日本无线码| 亚洲中文字幕无码一区| 精品熟女少妇AV免费观看| 在线看片免费人成视频久网下载| 亚洲乱码无限2021芒果| 激情97综合亚洲色婷婷五| 思思99re66在线精品免费观看| 免费无码又爽又刺激网站直播| mm1313亚洲国产精品无码试看 | 亚洲成人午夜电影| 亚洲精品国产福利一二区| 福利免费观看午夜体检区| 中文字幕无码一区二区免费| 亚洲av色香蕉一区二区三区蜜桃| 亚洲AV成人片色在线观看| 亚洲国产a级视频| 国产成人免费爽爽爽视频| 四虎成人精品永久免费AV| 一级毛片在线播放免费| 亚洲欧美中文日韩视频| 久久精品国产亚洲AV香蕉| 亚洲国产另类久久久精品小说| 国产中文字幕免费| 毛片a级三毛片免费播放| 亚洲免费中文字幕| 久9久9精品免费观看| jizz免费一区二区三区|