一天一段scala代码(十三)

一天一段scala代码(十三)

       为了更好的驾驭spark,最近在学习scala语言特性,主要看《快学scala》,顺便把一些自己认为有用的代码记下来。

package examples

object Example13 extends App{

  
  
//可变集合和不可变集合
  
  val iMap = scala.collection.immutable.Map("1"->2,"2"->2)
  println(iMap)
  println(iMap+("3"->3))//新创建一个map,并加上一个元素. 没有 +=函数
  println(iMap)
  
  val mMap = scala.collection.mutable.Map("1"->2,"2"->2)
  println(mMap)
  println(mMap+=("3"->3))//改变原来的map,并返回新的map
  println(mMap)
  
  //集合有很多方法,用IDE开发有提示,比较方便
  //举例:reduceLeft,scanLeft,getOrElse
  
  
  val partial_function_res = "-3+4".collect{case '+' =>1;case '-' => -1;}
  println(partial_function_res)
  
  //拉链操作
  val names=List("linger","angel")
  val ages=List("25","24")
  println(names zip ages)
  
  //遍历操作可以用iterator
  
  
  //赖视图
  import scala.math._
  val powers = (1 until 1000).view.map(pow(10,_))
  //并不会马上执行计算.类似spark的rdd的transform
  
  powers(99)//会执行计算 pow(10,99) 
  
  //赖视图如果加上force,则会强制进行计算,比如 
  (1 until 2).view.map(pow(10,_)).force
  
  //赖视图的还有一个好处,就是如果集合进行多次变换,则可以省去产生中间结果
  (1 until 2).view.map(pow(10,_)).map (1/_).force
  
  
  //平常我们用到的集合都是非线程安全的,scala有一些线程安全的特质,可以混入那些结合,使其线程安全.
  //另外,还可以使用java.util.concurrent的线程安全的集合
  
  
  
  
}

输出
Map(1 -> 2, 2 -> 2)
Map(1 -> 2, 2 -> 2, 3 -> 3)
Map(1 -> 2, 2 -> 2)
Map(2 -> 2, 1 -> 2)
Map(2 -> 2, 1 -> 2, 3 -> 3)
Map(2 -> 2, 1 -> 2, 3 -> 3)
Vector(-1, 1)
List((linger,25), (angel,24))

本文作者:linger
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值