Scala中的数组

Scala中数组需要指定数据类型和长度

1.定义:

 

两种方法:

 

方法1:

val arr1 = new Array[String](4)

生成一个 String类型长度为 4 的数组

ps: 这种声明方法 是类似Java 的面向对象类型的编程语言,常用写法

 

方法2:

var arr1 = Array(111,222.333,6666)
arr1.foreach(println("arr1: ", _))

ps: 这种声明是  函数式编程的常用写法,这里只需要记住是 有这种写法就可以了,       等学完后面讲解的伴生对象、apply的工厂模式 和 update 方法,就更清晰了

1.1 生成数组,并修改数组元素

eg:

var arr1 = new Array[Int](3)
arr1(0) = 1
arr1(1) =2
arr1.foreach(x => print("first:"+x+"\n"))

println("------------------")

//modify alter
arr1(0)=999
arr1.foreach(x => print("second:"+x+"\n"))

 

1.2生成一个可变长度的数组:

ArrayBuffer 可以不用指定数组长度

val buffer = ArrayBuffer[T]()
eg:

var arr1 = new ArrayBuffer[Int]()
arr1.append(1)
arr1.append(2)

arr1.foreach(x => println(x))
println("-----------")
println(arr1(0))

追加方法:

+=

++=

append

 

2.遍历数组

var arrB1 = ArrayBuffer[Int]()
arrB1.append(1)
arrB1.foreach{x => println(x)}  //arrB1.foreach(x => println(x))  小括号或者 花括号都可以

输出:1

 

3.二维数组

var arr1 = Array.ofDim[Int](2,2)
arr1(0)(0) = 1
arr1(0)(1)  = 2

arr1.foreach{x => x.foreach(y => println(y))}

输出:

 

4.数组合并  concat

 

import Array._

var arr2 = new Array[Int](1)
arr2(0)=3

var arr3 = new Array[Int](1)
arr3(0) = 4

var arr4 = concat(arr3, arr2)
arr4.foreach(x => println(x))

输出:

 

5.区间数组

 

5.1.定义区间数组


使用:range(a, b , c)   参数 a 代表 区间开始位置,  b 代表 区间结束位置,  c 代表 每次增加步长, 缺省默认为 1


eg:
var arr1 = range(1,10)
arr1.foreach(x => println(x))

输出:

设置步长为 3 

eg:
var arr2 = range(1,10,3)
arr2.foreach(x => println(x))

输出:

 

5.2 在for 循环中使用 区间数组
 

eg:

for(i <- range(1,10)){
  println(i)
}

 

输出:

 

6.数组常用函数

使用方法前需要先 import Array._ 引入包

 

 

1

def apply( x: T, xs: T* ): Array[T]

创建指定对象 T 的数组, T 的值可以是 Unit, Double, Float, Long, Int, Char, Short, Byte, Boolean。

2

def concat[T]( xss: Array[T]* ): Array[T]

合并数组

3

def copy( src: AnyRef, srcPos: Int, dest: AnyRef, destPos: Int, length: Int ): Unit

复制一个数组到另一个数组上。相等于 Java's System.arraycopy(src, srcPos, dest, destPos, length)。

4

def empty[T]: Array[T]

返回长度为 0 的数组

5

def iterate[T]( start: T, len: Int )( f: (T) => T ): Array[T]

返回指定长度数组,每个数组元素为指定函数的返回值。

以上实例数组初始值为 0,长度为 3,计算函数为a=>a+1

scala> Array.iterate(0,3)(a=>a+1)
res1: Array[Int] = Array(0, 1, 2)
6

def fill[T]( n: Int )(elem: => T): Array[T]

返回数组,长度为第一个参数指定,同时每个元素使用第二个参数进行填充。

7

def fill[T]( n1: Int, n2: Int )( elem: => T ): Array[Array[T]]

返回二数组,长度为第一个参数指定,同时每个元素使用第二个参数进行填充。

8

def ofDim[T]( n1: Int ): Array[T]

创建指定长度的数组

9

def ofDim[T]( n1: Int, n2: Int ): Array[Array[T]]

创建二维数组

10

def ofDim[T]( n1: Int, n2: Int, n3: Int ): Array[Array[Array[T]]]

创建三维数组

11

def range( start: Int, end: Int, step: Int ): Array[Int]

创建指定区间内的数组,step 为每个元素间的步长

12

def range( start: Int, end: Int ): Array[Int]

创建指定区间内的数组

13

def tabulate[T]( n: Int )(f: (Int)=> T): Array[T]

返回指定长度数组,每个数组元素为指定函数的返回值,默认从 0 开始。

以上实例返回 3 个元素:

scala> Array.tabulate(3)(a => a + 5)
res0: Array[Int] = Array(5, 6, 7)
14

def tabulate[T]( n1: Int, n2: Int )( f: (Int, Int ) => T): Array[Array[T]]

返回指定长度的二维数组,每个数组元素为指定函数的返回值,默认从 0 开始。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值