Scala入门随笔三

来源:互联网 发布:anyview的java版本下载 编辑:程序博客网 时间:2024/05/04 01:21

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.ArrayBufferimport scala.collection.mutable.ArrayBufferscala>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:1Array Element:1Array Element:2scala> for(i <- 0 until intArrayVar.length) println("Array Element: "+intArrayVar(i))Array Element:1Array Element:1Array Element:2//索引遍历数组的好处是还可以在for循环中加入过滤条件scala> for(i <- 0 until (intArrayVar.length,2)) println("Array Element: "+intArrayVar(i))Array Element:1Array Element:2scala> for(i <- (0 until intArrayVar.length).reverse) println("Array Element: "+intArrayVar(i))Array Element:2Array Element:1Array Element:1//直接数组遍历方式(推荐使用)。scala> for(i <- intArrayVar) println("Array Element: "+intArrayVar(i)) Array Element:1Array Element:1Array Element:2

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

scala> val intArrayVar2 = for(i <- intArrayVar) yield i*2intArrayVar2: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 strArrayVarres20: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.sumres61: Int = 55//极大值scala>intArr.maxres62: Int = 10//极小值scala>intArr.minres63: 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,32,3,4scala> for(i <- multiDimArr)       | for(j <- i) print(j+" ")1 2 3 2 3 4
0 0
原创粉丝点击