浅谈Java8Streamflatmap中间操作用法-创新互联

创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!

目前创新互联已为上1000家的企业提供了网站建设、域名、网络空间、网站托管、服务器租用、企业网站设计、肃州网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

小编这次要给大家分享的是浅谈Java8 Stream flatmap中间操作用法,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。

stream中的flatmap是stream的一种中间操作,它和stream的map一样,是一种收集类型的stream中间操作,但是与map不同的是,它可以对stream流中单个元素再进行拆分(切片),从另一种角度上说,使用了它,就是使用了双重for循环。

查看Stream源码中flatmap的方法定义:

Stream flatMap(Function<? super T, ? extends Stream<? extends R>> mapper)

从方法的定义可以看出,其入参是一个函数式接口,该接口的返回类型应该是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://azwzsj.com/article/csojjd.html