<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)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    收藏夾

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 美景之屋4在线未删减免费| 久久精品国产亚洲AV忘忧草18 | 国产h肉在线视频免费观看| 亚洲成色999久久网站| 久久午夜免费鲁丝片| 亚洲国产精品一区二区久久| 男女一进一出抽搐免费视频| 怡红院亚洲怡红院首页| 中国精品一级毛片免费播放| 亚洲综合色在线观看亚洲| 国产精品免费视频观看拍拍| 亚洲日韩激情无码一区| 久久免费观看国产精品| 亚洲激情校园春色| 在线不卡免费视频| 老司机午夜在线视频免费| 亚洲精品无码成人片在线观看 | 久久精品国产精品亚洲艾草网美妙| 特黄aa级毛片免费视频播放| 亚洲综合色自拍一区| 午夜理伦剧场免费| 亚洲五月丁香综合视频| 国产精品无码一区二区三区免费| 风间由美在线亚洲一区| 久久伊人亚洲AV无码网站| 精品一区二区三区免费| 亚洲乱码一二三四五六区| 四虎影院永久免费观看| 91福利免费网站在线观看| 亚洲酒色1314狠狠做| 国产成人综合久久精品免费 | eeuss免费影院| 久久丫精品国产亚洲av不卡| 午夜一级免费视频| 你是我的城池营垒免费看| 亚洲男女性高爱潮网站| 日韩亚洲国产二区| 久久久久久精品成人免费图片| 亚洲va中文字幕| 亚洲国产人成在线观看69网站| 美女被免费视频网站a国产|