浅谈Java8Streamflatmap中间操作用法-创新互联
创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!

小编这次要给大家分享的是浅谈Java8 Stream flatmap中间操作用法,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。
stream中的flatmap是stream的一种中间操作,它和stream的map一样,是一种收集类型的stream中间操作,但是与map不同的是,它可以对stream流中单个元素再进行拆分(切片),从另一种角度上说,使用了它,就是使用了双重for循环。
查看Stream源码中flatmap的方法定义:
从方法的定义可以看出,其入参是一个函数式接口,该接口的返回类型应该是Stream< ? extends R > 类型的。
从实际需求中查看如何使用flatmap:
需求:有一个补习学校,其中有若干老师教学若干门课程,现在学校有关于数学教学的通知要传达给所有学数学的学生家长,将电子邮件发送到他们的邮箱中。
注意:一个老师可以教学多个科目,一个老师可以教学多个学生,一个学生可以报名多个科目,一个学生可以有多个家长。
数据结构(均省略get/set, toString ,构造器):
// 老师
public class Teacher {
private String id;
private String name;
private String subject;
}
// 学生
public class Student {
private String id;
private String name;
private String techId;
// 重写hashCode及equals方法(id及name相同就为同一个学生)
}
// 家长
public class Parents {
private String id;
private String name;
private String chirldId;
private String email;
}
// 课程
public enum Subject {
private String value;
private String desc;
Subject(String value, String desc) {
this.value = value;
this.desc = desc;
}
Math("1", "数学"),
Chinese("2", "汉语"),
Music("3", "音乐"),
English("4", "英语");
} 本文标题:浅谈Java8Streamflatmap中间操作用法-创新互联
当前网址:http://www.scyingshan.cn/article/csojjd.html


咨询
建站咨询
