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()
}
}