美文网首页
黑猴子的家:Java 8 -> Stream 中间操作(映

黑猴子的家:Java 8 -> Stream 中间操作(映

作者: 黑猴子的家 | 来源:发表于2019-03-03 08:15 被阅读4次
    1、概念

    多个中间操作可以连接起来形成一个流水线,除非流水线上触发终止操作,否则中间操作不会执行任何的处理!而在终止操作时一次性全部处理,称为“惰性求值”。

    2、映射
    3、map
    package com.yinggu.demo11;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Stream;
    import org.junit.Test;
    import com.yinggu.data.EmployeeData;
    import com.yinggu.domain.Employee;
    
    
     * @author 黑猴子的家 
     * https://www.jianshu.com/u/37fd8e2dff4c
    
    public class TestStreamMiddle {
          List<Employee> list = EmployeeData.getData();
          // 映射map
          @Test
          public void testmap1() {
                // 1.获取Stream对象
                Stream<Employee> streamlist = list.stream();
                // 2.中间操作
                // 2-1.map:将每一个元素 映射成一个普通类型的元素
                Stream<String> mapStream = streamlist.map(Employee::getName);
                // Stream<Integer> map = streamlist.map(Employee::getAge);
                // 3.终止操作
                mapStream.forEach(System.out::println);
          }
    }
    
    4、flatMap1
    package com.yinggu.demo11;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Stream;
    import org.junit.Test;
    import com.yinggu.data.EmployeeData;
    import com.yinggu.domain.Employee;
    
     * @author 黑猴子的家 
     * https://www.jianshu.com/u/37fd8e2dff4c
    
    public class TestStreamMiddle {
          List<Employee> list = EmployeeData.getData();
          // 映射 flatMap
          @Test
          public void testmap2() {
                // 1.获取Stream对象
                Stream<Employee> streamlist = list.stream();
                // 2.中间操作
                Stream<Object> mapstream = 
                      streamlist.flatMap(TestStreamMiddle::fromEmployeeToStream);
                // 3.终止操作
                mapstream.forEach(System.out::println);
          }
          public static Stream<Object> fromEmployeeToStream(Employee e) {
                return Stream.of(e.getId(), e.getName(), e.getAge(), e.getSalary());
          }
    }
    
    5、flatMap2
    package com.yinggu.demo11;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Stream;
    import org.junit.Test;
    import com.yinggu.data.EmployeeData;
    import com.yinggu.domain.Employee;
    
     * @author 黑猴子的家 
     * https://www.jianshu.com/u/37fd8e2dff4c
    
    public class TestStreamMiddle {
          List<Employee> list = EmployeeData.getData();
          // 映射flatMap
          @Test
          public void testmap3() {
                // 定义一个集合
                List<String> list = new ArrayList<>();
                list.add("john");
                list.add("lucy");
                list.add("lily");
                // 获取Stream对象
                Stream<String> streamlist = list.stream();
                // 映射:将每一个元素 映射成char类型的Stream
                Stream<Character> flatmapStream = 
                            streamlist.flatMap(TestStreamMiddle::fromStreamToChar);
                // 终止操作
                flatmapStream.forEach(System.out::println);
          }
    
          public static Stream<Character> fromStreamToChar(String str) {
                char[] charArray = str.toCharArray();
                List<Character> list = new ArrayList<>();
                for (int i = 0; i < charArray.length; i++) {
                      list.add(charArray[i]);
                }
                return list.stream();
          }
    }
    

    相关文章

      网友评论

          本文标题:黑猴子的家:Java 8 -> Stream 中间操作(映

          本文链接:https://www.haomeiwen.com/subject/qufjuqtx.html