【Scala】Array数组

数组

定长数组

val arr = new Array[T](数组的长度)
val arr =Array(1,2,3,4,5)

//初始化一个长度为8的定长数组,其中所有元素均为0
val arr1 = new Array [Int](8)
//直接打印定长数组,内容为数组的hashcode值
println (arr1)

//toBuffer会将数组转换成变长数组缓冲
println(arr1.toBuffer)

//如果使用new,相当于调用了数组的apply方法,直接为数组赋值
val arr2=Array[Int](10)

//定义一个长度为3的定长数组,尝试将数据取出、修改,(min/sorted.reverse的用法)
val arr3 = Array("hadoop","bigdata","scala")




//定长数组并不限定数组元素的改变,但是不可以增删元素

变长数组

import scala.collection.mutable.ArrayBuffer

//定义一个变长数组
val arr4 =ArrayBuffer[Int]()
//向数组缓冲追加元素
//+=尾部追加元素
arr4 +=1
//追加多个元素
arr4 +=2,3,4//追加一个数组
arr4 ++=Array(6,7)
//追加一个数组缓冲
arr4 ++=ArrayBuffer(8,9)
//打印缓冲数组arr4
println(arr4)

//在数组的某一个位置插入元素用insert,从某下标插入
arr4.insert(0,-3,-2)
//删除数组某一个位置,用remove,按照下标删除
arr4.remove(1)
arr4 -=3
arr4 --=Array(6,7)
println (arr4)

数组遍历

//初始化一个数组
val arr3= Array[Int](1,2,3,4,5,6,7,8)
//for 循环
for (i <- arr3)
println(i)

//好用的until会生成一个Range
//reverse是将前面的生成的反转
for (i <- (0 until arr3.length).reverse)

//等价
//for (i <- (arr3.sorted.reverse))
//for (i <- (arr3.reverse))
println(i)

数组的转换

//yield实现数组的转换
scala> arr
res14: Array[Int] = Array(1, 2, 3, 4)

scala> val res1 = for (e <- arr) yield e*2
res1: Array[Int] = Array(2, 4, 6, 8)


提问字符串可以*2么??

//map实现数组的转换
scala> arr
res16: Array[Int] = Array(1, 2, 3, 4)

scala> val result =arr.map(_*2)
result: Array[Int] = Array(2, 4, 6, 8)

scala> result
res17: Array[Int] = Array(2, 4, 6, 8)


//定义一个数组,将偶数取出,乘以10
val arr3= Array[Int](1,2,3,4,5,6,7,8)

val result1 = for (i <- arr3 if i % 2 ==0)yield i*10
println(result1.toBuffer)

//更高级的方法
//filter是过滤,接收一个返回值为boolean的函数
//map相当于将数组中的每一个元素取出来,应用传进去的函数
val result2 = arr3.filter(_ % 2 ==0).map(_*10)
println(result2.toBuffer)

数组的常用算法

scala> arr
res18: Array[Int] = Array(1, 2, 3, 4)

scala> arr.min
res19: Int = 1

scala> arr.max
res20: Int = 4

scala> arr.sum
res21: Int = 10

scala> arr.sorted.reverse
res22: Array[Int] = Array(4, 3, 2, 1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值