scala 基础学习(4)

map操作:

  • 让每个字符串都变成大写字母
scala> val books = List("Hadoop", "Hive", "HDFS")
books: List[String] = List(Hadoop, Hive, HDFS)
scala> books.map(s => s.toUpperCase)
res0: List[String] = List(HADOOP, HIVE, HDFS)

(参数) => 表达式 //如果参数只有一个,参数的圆括号可以省略

flatMap操作:

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

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

filter操作:

遍历一个集合并从中获取满足指定条件的元素组成一个新的集合

  • 下面我们首先创建一个映射
val a = Map("X" -> "Xiamen", "T" -> "Tsinghua","P"->"Peking","N"->"Nantong")

//然后我们采用filter操作过滤得到那些包含“Xiamen”的元素:
val b = a filter {kv => kv._2 contains "Xiamen"}
//遍历打印 b 
b foreach{kv=> println(kv._1+":"+kv._2)}

//也可以采用filter操作过滤得到那些学校名称中以字母“P”开头的元素
val c=a filter{kv=>kv._2 startsWith "P"}
//遍历打印 c 
c foreach{kv=> println(kv._1+":"+kv._2)}

reduce操作:

使用reduce这种二元操作对集合中的元素进行归约

scala> val a = List(1,2,3,4,5)
a: List[Int] = List(1, 2, 3, 4, 5)
scala> a.reduceLeft(_ + _)
res21: Int = 15
scala> a.reduceRight(_ + _)
res22: Int = 15
  • a.reduceLeft(_ + _)
1+2 = 3
3+3 = 6
6+4 = 10
10+5 = 15
  • a.reduceRight(_ + _)
4+5 = 9
3+9 = 12
2+12 = 14
1+14 = 15

直接使用reduce,默认采用的是reduceLeft

fold操作:

折叠 ( fold ) 操作和 reduce(归约)操作比较类似

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

fold 有两个变体:foldLeft()foldRight(),其中,foldLeft(),第一个参数为累计值,集合遍历的方向是从左到右。 foldRight() ,第二个参数为累计值,集合遍历的方向是从右到左。对于 fold() 自身而言,遍历的顺序是未定义的,不过,一般都是从左到右遍历。

  • 我感觉 fold 中已经包含了 reduce 操作, fold(0)(+) 等于 reduce(+)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

書盡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值