您的位置:首页 > 其它

scala学习笔记之数组

2016-08-29 15:37 239 查看
scala数组角标从0开始,使用(index)访问元素,和java不同,可以创建一个数组缓存

object ArrayDemo extends App {
//数组的声明
//  var z:Array[String] = new Array[String](3)
//  var z = new Array[String](3)
var array1 = Array(1, 2, 1.5, "abc");
var array2 = new Array[String](1); //定义数组的另一种方式,角标是从0开始的
// apply( x: T, xs: T* ): Array[T]创建指定对象 T 的数组
var array3 = Array.apply(1, 2, 3)
array2(0) = "hehe" //数组的赋值

//数组的合并Array.concat
var concatArray = Array.concat(array2, array2)

//二维数组->多维数组
//def ofDim[T]( n1: Int ): Array[T]创建指定长度的数组
//def ofDim[T]( n1: Int, n2: Int ): Array[Array[T]]创建二维数组
//def ofDim[T]( n1: Int, n2: Int, n3: Int ): Array[Array[Array[T]]]创建三维数组
var manyDimensions1 = Array((1, 2, 3), (4, 5, 6))
var manyDimensions2 = new Array[Array[String]](3)
var manyDimensions3 = Array.ofDim[String](3, 2)
manyDimensions2(0) = Array("ee") //赋值
manyDimensions3(0)(1) = "String" //赋值

//empty[T]: Array[T]返回长度为 0 的数组
var emotyArr = Array.empty[String]

//range( start: Int, end: Int, step: Int ): Array[Int]创建指定区间内的数组,step 为每个元素间的步长
//range( start: Int, end: Int ): Array[Int]创建指定区间内的数组
var a1 = Array.range(0, 10)
var a2 = Array.range(0, 10, 2)

//变长数组:缓冲数组
//import scala.collection.mutable.ArrayBuffer
var bufferArray = new ArrayBuffer[Int](); //()可以省略
bufferArray += 1 //在末尾添加一个值或多个值      高效的添加
bufferArray += (1, 2, 3) //在末尾添加一个值或多个值
bufferArray ++= Array(1, 2, 3) //在末尾添加一个值或多个值,如果是集合,就需要用++=
bufferArray.trimEnd(3) //移除末尾的3个数
bufferArray.insert(2, 2) //指定角标位置添加一个或多个数                                  //效率偏低
bufferArray.insertAll(2, Array(2, 3, 4)) //指定角标位置添加一个集合    //效率偏低
bufferArray.remove(2) //移除哪个元素
bufferArray.remove(2, 2) //从第2个角标开始移除2个元素

//遍历数组
for (a <- array1) { //直接遍历数组
println(a)
}
for (i <- 0 until array1.length) { //使用下表遍历数组
println(array1(i))
}
for (i <- 0 until (array1.length, 2)) { //从0开始没2个循环一次
println(array1(i))
}
for (i <- (0 until array1.length).reverse) { //倒序遍历
println(array1(i))
}
val iter = array1.iterator; //使用迭代器
while (iter.hasNext) {
println(iter.next())
}

//数组的转换

var newArray1 = for (a <- array1 if a != 1) yield (a + "aaa") //方式1,除了值为1的所有元素都加上aaa
var newArray2 = array1.filter { _ != 1 }.map { _ + "bbb" }    //方式2
var newArray3 = array1.filter { _ != 1 } map { _ + "bbb" }    //方式3

//数组的常用算法
var array4 = Array.apply(1, 5, 6, 4, 5)
var sum = array4.sum //求和
var max = array4.max //求最大值
var min = array4.min //求最小值
val sortArray = array4.sorted    //排序
var s1 = array4.mkString("and")                //result  1 and 2 and 3 and 4 and 5
var s2 = array4.mkString("<", "and", ">")      //result  <1 and 2 and 3 and 4 and 5>

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  scala