Scala学习第五天数组

package com.learn.scala

import scala.collection.mutable.ArrayBuffer

/**

* Scala学习第五天数组

* Scala中有两种类型的数组,一种是Array定长,另一种是ArrayBuffer变长数组

* Array与ArrayBuffer的区别类似于Java中数组与ArrayList的区别

* Created by zhuqing on 2017/2/24.

*/

objectDay5Array {

defmain(args: Array[String]): Unit = {

/**

* Array有两种初始化方式

*/

//1. new Array[Int](10) ; 长度为10的Int类型的数组,所有的值为null

valarr =newArray[Int](10);

println(arr.length);

//打印10

//2. Array[Int](10,9,...) ; 长度为2的Int类型的数组,并且这个数组的第一个是10,第二是9 .其实是使用了伴生对象的apply方法

valarr1 =Array[Int](10,9);

println(arr1.length);//打印2

/**

* 更多关于Array的操作看API:

* http://www.scala-lang.org/api/current/scala/Array.html

*/

//Array数组的赋值取值

arr(0) =10;arr(1)=9

println(arr(0)+":"+arr(1));//打印10:9

/**

* ArrayBuffer与Array初始化类似

*/

//与Java的ArrayList,只是初始化了空间,但是真实的长度是0

valarrBuff =newArrayBuffer[Int](10)

println(arrBuff.length);//打印0

valarrBuff2 = ArrayBuffer[Int](10,9)

println(arrBuff2.length);//打印2

/**

*

* arrBuff的赋值与Array不一样 使用insert方法,第一个参数是位置,从第二个以后是值.

* 方法的定义insert(n : Int, elems : A*)

* 关于ArrayBuffer的API:http://www.scala-lang.org/api/current/scala/collection/mutable/ArrayBuffer.html

*/

arrBuff.insert(0,10,9);

println(arrBuff(0)+":"+arrBuff(1));//打印10:9

/**

* ArrayBuffer的几个常用的方法

*/

valarrayBuffer =this.createArrayBuffer()

//remove(index:Int) 移除index位置的数据,后面的数据向前移动一个

println(arrayBuffer(0))//打印10

//移除后后面数据向前移动一位

arrayBuffer.remove(0);

println(arrayBuffer(0))//打印9

//ArrayBurffer后面拼接1到10的区间Range , Range实现了TraversableOnce

arrayBuffer ++=1to10;

printlnArr(arrayBuffer)//打印9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10

vararrayB =newArrayBuffer[Int](20)

//arrayB后面再拼接一个ArrayBuffer,ArrayBuffer实现了TraversableOnce

arrayB ++= arrayBuffer

printlnArr(arrayB)//打印9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10

//ArrayBuffer也可以用++= 拼接一个数组,但是从API看++= 方法中的参数是TraversableOnce,

// 可能在这里Array自动转换了吧,这里谁要是知道原理,可以讲一下。

arrayB ++= arr1

printlnArr(arrayB)//打印9 8 7 6 5 4 3 2 1 1 2 3 4 5 6 7 8 9 10 10 9

}

/**

* 创建一个1到10的ArrayBuffer

*@return

*/

defcreateArrayBuffer() : ArrayBuffer[Int] = {

//arrBuff设置值 :_*的意思可以看前一天的

ArrayBuffer[Int]((1to10).reverse:_*)

}

defprintlnArr(arr:ArrayBuffer[Int]): Unit ={

println()

//数组的遍历

for(a <- arr){

print(a+" ")

}

println()

}

}

你可能感兴趣的:(Scala学习第五天数组)