/*
中间操作 : 映射 -> 将stream操作的每个元素转换成另外一个种形式|提取信息
<R> Stream<R> map(Function<? super T,? extends R> mapper) 返回一个流,该流包含将给定函数应用于此流的元素的结果。 ******
Stream操作的每一个元素都会应用参数函数映射为一个结果,最终返回持有所有结果的新的流
<R> Stream<R> flatMap(Function<? super T,? extends Stream<? extends R>> mapper)
Stream操作的每一个元素都会应用参数函数映射为一个结果,这个结果的类型必须为Stream类型,会对所有的结果Stream进行连接,连接成为一个流返回
区别 :
1.map映射的每一个数据结果可以为任意类型
flatMap映射的每一个数据结果只能为Stream类型
2.map不存在结果流连接的情况,直接返回持有结果的新的流
flatMap结果类型肯定为Stream类型,所有先连接再返回一个流,流中操作的为具体的数据
*/
static List<Employee> emps = Arrays.asList(
new Employee(1001,"胡歌",35,20000),
new Employee(1002,"彭于晏",30,16000),
new Employee(1003,"吴彦祖",33,18000),
new Employee(1003,"吴彦祖",33,18000),
new Employee(1004,"谢霆锋",33,19000),
new Employee(1005,"吴磊",22,17000)
);
public static void main(String[] args) {
//所有员工的姓名输出
emps.stream()
.distinct()
//.map(e->e.getName())
.map(Employee::getName)
.forEach(System.out::println);
//把所有的字符串转为大写遍历输出
String[] arr = {"aaa","bbbb","cc"};
Arrays.stream(arr).map(String::toUpperCase).forEach(System.out::println);
//统计字符串数组中每一个字符串的长度输出