开发者学堂课程【Scala 核心编程 - 进阶:Map 映射操作的提出】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/610/detail/9047
Map 映射操作的提出
内容介绍:
一、抛出问题引起思考
二、思考
一、抛出问题引起思考
1.看一个实际需求:
有一个 List 集合中有3个元素,分别是3、5、7,对该集合中所有元素*2,将其结果放到一个新的集合中返回,即返回一个新的 List(3,10,14),请编写程序实现。
2.如何解决
(1)使用传统的方法解决
object MapoperateDemoo1 {
def main( args : Array[string]): unit = {
val list1 = List(3,5,7)
//
不可变集合
var list2 = List[Int]()
//创建的新集合,准备放入新的内容
for (item <- list1 ) {
//
遍历
list2 = list2 :+item * 2
//将遍历后的每一个元素进行*2,然后返回到新的集合中
}
println(“list2=”+list2)
}
}
运行结果为:
list(3,10,14)
(2)传统方法优点分析
处理方式比较直接,并且好理解
好理解的东西往往不够高效模块化编程的特点往往不能体现出来。
(3)传统方法缺点分析
不够简洁,不够高效
没有体现出函数是编程的特点,集合交给函数得到一个新的集合,然后交给第二个函数,又得到一个新的集合。
不利于处理复杂的数据处理业务,上面要求对数据的处理只是对每个元素*2,但是现实中会有很多的需求,比如先*2,再进行过滤,过滤完后还要进行简化,简化完还要进行折叠,折叠后还要进行排序,此时用传统方法结构会非常乱。
二、思考
大数据中一个最重要的特点是希望对大量集合里面的数据进行处理,处理完后得到一个新的集合,然后再对该集合进行处理得到一个新的集合。这个特点在大数据中应用的非常广泛,大数据将对集合中数据处理的粒度提高。
原先常规的 Java ,像传统的编程语言,一般是一个变量传入后进行处理得到一个新的变量,现在的大数据处理的数据量特别大,而且是批量处理,scala的创始人马丁·奥德斯基对其做了扩展,将整体一个集传入进行处理,处理完再得到一个新的集合然后再进行处理。
注意:
Map 映射操作不能认为是只对 Map 这个集合进行操作,而是指集合进行 Map 操作,可以是任意集合。