- 1、本文档共142页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Chapter2-厦门大学-林子雨-大数据处理技术-厦门大学数据库实验室.ppt
2.4.2 针对集合的操作 遍历操作 map操作和flatMap操作 filter操作 reduce操作 fold操作 遍历操作 列表的遍历 可以使用for循环进行遍历: 也可以使用foreach进行遍历: 遍历操作 映射的遍历 循环遍历映射,是经常需要用到的操作,基本格式是: 执行结果: 创建一个映射 循环遍历映射 遍历操作 映射的遍历 也可以使用foreach来实现对映射的遍历 也可以尝试使用下面形式来遍历 map操作和flatMap操作 map操作是针对集合的典型变换操作,它将某个函数应用到集合中的每个元素,并产生一个结果集合。 map操作 map操作和flatMap操作 flatMap操作 flatMap是map的一种扩展。在flatMap中,我们会传入一个函数,该函数对每个输入都会返回一个集合(而不是一个元素),然后,flatMap把生成的多个集合“拍扁”成为一个集合。 上面的flatMap执行时,会把books中的每个元素都调用toList,生成List[Char],最终,多个Char的集合被“拍扁”成一个集合。 filter操作 遍历一个集合并从中获取满足指定条件的元素组成一个新的集合。Scala中可以通过filter操作来实现。 首先创建一个映射: val university = Map(XMU - Xiamen University, THU - Tsinghua University,PKU-Peking University,XMUT-Xiamen University of Technology) 采用filter操作过滤得到那些学校名称中包含“Xiamen”的元素 val universityOfXiamen = university filter {kv = kv._2 contains Xiamen} 采用filter操作过滤得到那些学校名称中以字母“P”开头的元素: val universityOfP = university filter {kv = kv._2 startsWith P} reduce操作 使用reduce这种二元操作对集合中的元素进行归约 reduce包含reduceLeft和reduceRight两种操作,前者从集合的头部开始操作,后者从集合的尾部开始操作。 reduceLeft(_ + _)整个加法操作的执行顺序如下: reduceRight(_ + _)表示从列表尾部开始,对两两元素进行求和操作,顺序如下: 直接使用reduce,而不用reduceLeft和reduceRight,这时,默认采用的是reduceLeft fold操作 折叠(fold)操作和reduce(归约)操作比较类似。fold操作需要从一个初始的“种子”值开始,并以该值作为上下文,处理集合中的每个元素。 fold有两个变体:foldLeft()和foldRight(),其中,foldLeft(),第一个参数为累计值,集合遍历的方向是从左到右。foldRight(),第二个参数为累计值,集合遍历的方向是从右到左。对于fold()自身而言,遍历的顺序是未定义的,不过,一般都是从左到右遍历。 2.4.3 函数式编程实例WordCount 附录:主讲教师林子雨简介 单位:厦门大学计算机科学系 E-mail: ziyulin@ 个人网页:/linziyu 数据库实验室网站: 主讲教师:林子雨 林子雨,男,1978年出生,博士(毕业于北京大学),现为厦门大学计算机科学系助理教授(讲师),曾任厦门大学信息科学与技术学院院长助理、晋江市发展和改革局副局长。中国计算机学会数据库专业委员会委员,中国计算机学会信息系统专业委员会委员,荣获“2016中国大数据创新百人”称号。中国高校首个“数字教师”提出者和建设者,厦门大学数据库实验室负责人,厦门大学云计算与大数据研究中心主要建设者和骨干成员,2013年度厦门大学奖教金获得者。主要研究方向为数据库、数据仓库、数据挖掘、大数据、云计算和物联网,并以第一作者身份在《软件学报》《计算机学报》和《计算机研究与发展》等国家重点期刊以及国际学术会议上发表多篇学术论文。作为项目负责人主持的科研项目包括1项国家自然科学青年基金项目(No、1项福建省自然科学青年基金项目(No.2013J05099)和1项中央高校基本科研业务费项目(No.2011121049),同时,作为课题负责人完成了国家发改委城市信息化重大课题、国家物联网重大应用示范工程区域试点泉州市工作方案、2015泉州市互联网经济调研等课题。中国高校首个“数字教师”提出者和建设者,2009年至今,“数字教师”大平台累计向网络免费发布超过100万字高价值的研究和教学资料,累计网络
文档评论(0)