美文网首页
黑猴子的家: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