Scala入门随笔三

1.数组是相同数据类型的元素按一定顺序排列的集合。Scala中的数组分为定长和变长的数组。两种数组定义时的区别如下:

//定长数组(通过显示地new创建)。
scala>val numArray = new Array[Int](10)
numArray:Array[Int] = Array(0,0,0,0,0,0,0,0,0,0)

scala> val strArray = new Array[String](10)
strArray:Array[String] = Array(null,null,null,null,null,null,null,null,null,null)

//定长数组(无new操作的数组定义方式,其实它调用的是Applay对象的apply方法进行数组创建操作)。
scala>val strArray2 = Array("First","Second")
strArray2:Array[String] = Array(First,Second)

//变长数组,最常用的变长数组为ArrayBuffer,在包scala.collection.mutable中,使用时需要显示地引入。(通过显示地new创建,也可以不通过new创建,原理同上)。
scala>import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.ArrayBuffer

scala>val strArrayVar = new ArrayBuffer[String]()
strArrayVar:scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer()

2.scala的数组遍历有两种方法即通过索引遍历和直接数组遍历,具体操作如下:

scala> val intArrayVar = ArrayBuffer[Int](1,1,2)
intArrayVar:scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1,1,2)

//索引遍历。对数组内容进行引用的方法如下intArrayVar(i)。
scala> for(i <- 0 to intArrayVar.length-1) println("Array Element: "+intArrayVar(i))
Array Element:1
Array Element:1
Array Element:2

scala> for(i <- 0 until intArrayVar.length) println("Array Element: "+intArrayVar(i))
Array Element:1
Array Element:1
Array Element:2

//索引遍历数组的好处是还可以在for循环中加入过滤条件
scala> for(i <- 0 until (intArrayVar.length,2)) println("Array Element: "+intArrayVar(i))
Array Element:1
Array Element:2

scala> for(i <- (0 until intArrayVar.length).reverse) println("Array Element: "+intArrayVar(i))
Array Element:2
Array Element:1
Array Element:1

//直接数组遍历方式(推荐使用)。
scala> for(i <- intArrayVar) println("Array Element: "+intArrayVar(i)) 
Array Element:1
Array Element:1
Array Element:2

此外我们还可以遍历生成新的数组,并且遍历后原数组保持不变。生成的额新数组与原数组的性质相同即原数组为定长(变长)数组,新数组也为定长(变长)数组:

scala> val intArrayVar2 = for(i <- intArrayVar) yield i*2
intArrayVar2:scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(2,2,4)

3.对变长数组做进一步的理解:当在变长数组中进行一些操作时,这些操作直接作用于原始定义的集合即该变长数组:

//在尾部添加元素,+=即为在尾部添加元素的意思。
scala> strArrayVar += "a"
res18: strArrayVar.type = ArrayBuffer(a)

scala> strArrayVar += ("c","b")
res19: strArrayVar.type = ArrayBuffer(a,c,b)

scala strArrayVar
res20:scala.collection,mutable.ArrayBuffer[String] = ArrayBuffer(a,c,b)

4.大多数情况下我们在使用数组时还会用到许多数组中的函数:

var intArr = Array(1,2,3,4,5,6,7,8,9,10)
intArr:Array[Int] = Array(1,2,3,4,5,6,7,8,9,10)

//和
scala>intArr.sum
res61: Int = 55

//极大值
scala>intArr.max
res62: Int = 10

//极小值
scala>intArr.min
res63: Int = 1

//mkString()方法
scala>intArr.mkString(",")
res64: String = 1,2,3,4,5,6,7,8,9,10

5.scala中的多维数组:

//多维数组的定义
scala> var multiDimArr = Array(Array(1,2,3),Array(2,3,4))
multiDimArr: Array[Array[Int]] = Array(Array(1,2,3),Array(2,3,4))

//获取元素(第一行第三列)
scala>multiDimArr(0)(2)
res74: Int = 3

//多维数组的遍历
scala> for(i <- multiDimArr) println(i.mkString(","))
1,2,3
2,3,4

scala> for(i <- multiDimArr) 
      | for(j <- i) print(j+" ")
1 2 3 2 3 4
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值