Scala基础(9) 针对集合的操作

  • 列表的遍历
val list = List(1,2,3,4,5)
for (elem <- list){println(elem)}

也可以使用foreach进行遍历

val list = List(1,2,3,4,5)
list.foreach(elem => println(elem)) // 这是一个匿名函数 (elem:Int) => println(elem)
  • 映射的遍历
for((k,v) <- 映射) 语句块
//创建一个映射
val university = Map("XMU"->"Xiamen University", "THU"->"Tsinghua University")
// 循环遍历映射
for ((k, v) <- university){printf("Code is : %s and name is %s\n",k, v)}
// foreach实现对映射的遍历
university foreach(case(k,v) => println(k + " " +v) )
// 或者写成
university.foreach({case(k,v) => println(k+" "+v)}) 

map操作

map操作是针对集合的典型变换操作,它将某个函数应用到集合中的每个元素并产生一个结果集合。

scala> val books = List("Hadoop", "Hive", "HDFS")
scala> books.map(s => s.toUpperCase)

map是一一对应的映射,给几个就得到几个

flatMap操作

flatMap是map的一种拓展。在flatMapMpa中,我们会传入一个函数,该函数对每个输入都会返回一个集合(而不是一个元素),然后,flatMap把生成的多个集合“拍扁”成为一个集合

scala> val books = List("Hadoop","Hive","HDFS")
scala> books flatMap(s => s.toList)
res0: List[char] = List(H, a, d, o, o, p, H, i, v, e, H, D, F, S)

上面的flatMap执行时,会把books中的每个元素都调用toList,生成List[Char],最终,多个Char的集合被“拍扁”成为一个集合。

filter操作

遍历一个集合并从中获取满足指定条件的元素组成一个新的集合。Scala中可以通过filter操作来实现

创建一个映射

val university = Map("XMU"->"Xiamen University","THU"->"Tsinghua University","PKU"->"Peking University")

采用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两种操作,前者从集合的头部开始操作,后者从集合的尾部开始操作。

scala> val list = List(1,2,3,4,5)
scala> list.reduceleft(_+_)
scala> list.reduceRight(_+_)

fold操作

fold操作和归约操作比较类似。fold操作需要从一个初始的“种子”值开始,并以该值作为上下文,处理集合中的每个元素。

比如:

scala> val list = List(1,2,3,4,5)
scala> list.fold(10)(_*_)
res0: Int = 1200

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值