Scala学习第五天 Scala数组操作实战详解

信息来源于 DT大数据梦工厂微信公众账号:DT_Spark
DT大数据梦工厂群号:302306504王家林老师微信号:wangjialinandroid

1、数组的基本操作

//声明一个固定长度的数组,类型为Int,元素个数为10. 
val nums = new Array[Int](10)  
//声明一个类型为String的固定长度的数组,元素个数为10 .
val a = new Array[String](10)
/*直接以Array的方式声明一个数组,初始化第一个元素为'Hello'
,第二个元素为"World",通过类型推导,判断出*/

//数组的类型为String.
val s = Array("Hello" ,"World")
// 设置数组中存储的第一个元素为"Good"
s(0) = "Good"
for (elem<- s) println(elem)
  val b = new ArrayBuffer[int]() 
  //ArrayBuffer是缓存数组,内容大小可以改变,可以参考
  java里的String Buffer
  b += 1 //b里增加一个为1的元素  
  结果是ArrayBuffer(1)
  b += (1,2,3,5) //在已有的内容上,追加上1,2,3,5
  结果是ArrayBuffer(1,1,2,3,5)
  b ++= Array(8,13,21) //有两个加号,直接追加Array
  结果是ArrayBuffer(1,1,2,3,5,8,13,21)
  b.trimEnd(5) //去掉后面的5个元素
  结果是ArrayBuffer(1,1,2)
  b.insert(2,6) //在2的位置上插入6
  结果是ArrayBuffer(1,1,6,2)
  b.insert(2,7,8,9) //在2的位置上插入7,8,9
  结果是ArrayBuffer(1,1,7,8,9,6,2)
  b.remove(2) //除去索引为2的元素
  结果是ArrayBuffer(1,1,8,9,6,2)
  b.remove(2,3) //从索引2的元素开始,除去3个元素
  结果是ArrayBuffer(1,1,2)
  b.toArray  /*b.toArray结果不再是mutable的
  ArrayBuffer了,而是变成Array,他的元素个数是固定的*/
for(i <- 0 until a.length)  //对a所有的元素遍历
 println(i+":"+a(i))  

2、数组的进阶操作

 val c = Array(2,3,5,7,11)
 val result = for (elem <- c) yield 2*elem  
 /*遍历c的每一个元素,然后乘以2,yield使后面的表达式变为
 一个集合,赋值给result*/
 结果是Array(4,6,10,14,22)
 c.filter(%2==0).map(2*_) 
 //每次判断元素是否是偶数,具有可读性
 结果是Array(4)
 Array(1,7,2,9).sum //Array的求总和的函数
 结果是19
 ArrayBuffer("Marry","had","a","little","lamb").max
 //求ArrayBuffer中的哪个字符串长度最长
 结果是little
 val d = ArrayBuffer(1,7,2,9)
 val bSorted = d.sorted  /*对ArrayBuffer里的元素排序
 ,默认是升序*/
  val e=Array(1,7,2,9)
  Scala.util.Sorting.quickSort(e)  
  //对ArrayBuffer里的元素进行快速排序
  e.mkString("and")  //把e的元素用and连接起来,转换成字符串
  结果是1 and 2 and 7 and 9
  e.mkString("<",",",">")  /*将e的元素以左边<,右边>,
  中间用,号分隔*/
  结果是<1,2,7,9>

3、多维数组

  valmatrix=Array.ofDim[Double](3,4)  
  /*用Array的ofDim方法声明一个34列的矩阵,初始为Array(Array(0.0,0.0,0.0,0.0),Array(0.0,0.0,0.0,0.0)
,Array(0.0,0.0,0.0,0.0))*/
  Matrix(2)(1)=42 
  /*在矩阵32列赋值为42,结果是Array(
  Array(0.0,0.0,0.0,0.0),
  Array(0.0,0.0,0.0,0.0),
  Array(0.42.0,0.0,0.0,0.0))*/
  valtriangle=new Array[Array[int]](10)  

  /*new Array一个数组,数组内部又是Array,有10个元
  素,为Array(null,null,null,null,null,null,
  null,null,null,null)*/
  for(i <- 0 until triangle.length)
  Triangle(i)=newArray[int](i+1)  
/*对Array里面的Array赋值不同的长度,第一行一个元素,
每行加一个元素,为Array(Array(0),Array(0,0),
Array0,0,0),Array(0,0,0,0),Array(0,0,0,0,0),
Array(0,0,0,0,0,0),Array(0,0,0,0,0,0,0),
Array(0,0,0,0,0,0,0,0),Array(0,0,0,0,0,0,0,0,0)
,Array(0,0,0,0,0,0,0,0,0,0)*/

4.worksheet
打开 ScalaIDE 选择 File -> New -> Scala WorkSheet, 建立一个名字为 ScalainAction 的 Scala WorkSheet。

每次保存就可以显示每个运算的结果,如下图所示:
这里写图片描述

Scala 深入浅出实战经典(1-64讲)完整视频、PPT、代码下载:

百度云盘:http://pan.baidu.com/s/1c0noOt6

腾讯微云:http://url.cn/TnGbdC

360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值