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();
}
}
网友评论