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

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    收藏夾

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲av最新在线观看网址| 四虎成人精品国产永久免费无码| 久久久亚洲欧洲日产国码aⅴ| va天堂va亚洲va影视中文字幕| 国产精品亚洲专一区二区三区| 18禁在线无遮挡免费观看网站| 在线观看视频免费完整版| www.亚洲精品| 亚洲男人的天堂在线| 久草免费福利在线| 久久电影网午夜鲁丝片免费| 国产精品亚洲а∨无码播放| 国内精品久久久久影院亚洲| 久久国产精品成人免费| 亚洲A∨午夜成人片精品网站 | 成人免费视频77777| 亚洲中文字幕AV在天堂| 日韩一区二区三区免费体验| 久久久久亚洲精品成人网小说| 亚洲av无码片vr一区二区三区| xxxxwww免费| 国产偷国产偷亚洲清高动态图| 亚洲日韩国产精品乱-久| 在线观看国产情趣免费视频| 一个人看www免费高清字幕| 爽爽日本在线视频免费| 亚洲av永久无码精品天堂久久| 污污网站免费观看| 亚洲综合最新无码专区| jizzjizz亚洲日本少妇| 日韩精品无码区免费专区 | 国产日韩AV免费无码一区二区三区| 久久国产精品亚洲综合| 精品久久久久国产免费| 色多多www视频在线观看免费| 亚洲va国产va天堂va久久| 久久久WWW成人免费精品| 亚洲天堂视频在线观看| 99久久精品免费视频| 久久亚洲熟女cc98cm| 亚欧色视频在线观看免费|