您好,登錄后才能下訂單哦!
這篇文章主要講解了“Scala中怎么定長數(shù)組”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Scala中怎么定長數(shù)組”吧!
創(chuàng)建一個(gè)定長數(shù)組的方式
使用Array定義一個(gè)長度不變的數(shù)組
object ArrayDemo {
def main(args: Array[String]){
//初始化一個(gè)長度為8的定長數(shù)組,其所有元素均為0
val arr1 = new Array[Int](8)
//直接打印定長數(shù)組,內(nèi)容為數(shù)組的hashcode值
println(arr1)
//將數(shù)組轉(zhuǎn)換成數(shù)組緩沖,就可以看到原數(shù)組中的內(nèi)容了
//toBuffer會(huì)將數(shù)組轉(zhuǎn)換長數(shù)組緩沖
println(arr1.toBuffer)
//注意:如果不使用new獲取數(shù)組,相當(dāng)于調(diào)用了數(shù)組的apply方法,直接為數(shù)組賦值
//初始化一個(gè)長度為1,值為10的定長數(shù)組
val arr2 = Array[Int](10)
//輸出數(shù)組元素值
println(arr2.toBuffer)
//定義一個(gè)長度為3的定長數(shù)組
val arr3 = Array("hadoop", "storm", "spark")
//使用()來訪問元素
println(arr3(2))
//包含10個(gè)整數(shù)的數(shù)組,初始化值為0
val nums = new Array[Int](10)
//遍歷數(shù)組
for(i <- 0 until nums.length)
print(s"$i:${nums(i)} ")
println()
//包含10個(gè)字符串的數(shù)組,初始化值為null
val strs0 = new Array[String](10)
for(i <- 0 until strs0.length)
print(s"$i:${strs0(i)} ")
println()
//賦初值的字符串?dāng)?shù)組
val strs1 = Array("hello" ,"world")
for(i <- 0 until strs1.length)
print(s"$i:${strs1(i)} ")
println()
//訪問并修改元素值
strs1(0) = "byebye"
for(i <- 0 until strs1.length)
print(s"$i:${strs1(i)} ")
println()
}
}
result
定義變長數(shù)組的方式:
使用 ArrayBuffer定義長度按需變化的數(shù)組。
import scala.collection.mutable.ArrayBuffer
object VarArrayDemo {
def main(args: Array[String]){
//定義一個(gè)空的可變長Int型數(shù)組
val nums = ArrayBuffer[Int]()
//在尾端添加元素
nums += 1
//在尾端添加多個(gè)元素
nums += (2,3,4,5)
//使用++=在尾端添加任何集合
nums ++= Array(6,7,8)
//這些操作符,有相應(yīng)的 -= ,--=可以做數(shù)組的刪減,用法同+=,++=
//使用append追加一個(gè)或者多個(gè)元素
nums.append(1)
nums.append(2,3)
//在下標(biāo)2之前插入元素
nums.insert(2,20)
nums.insert(2,30,30)
//移除最后2元素
nums.trimEnd(2)
//移除最開始的一個(gè)或者多個(gè)元素
nums.trimStart(1)
//從下標(biāo)2出移除一個(gè)或者多個(gè)元素
nums.remove(2)
nums.remove(2,2)
//使用增強(qiáng)for循環(huán)進(jìn)行數(shù)組遍歷
for(elem <- nums)
println(elem)
//基于下標(biāo)訪問使用增強(qiáng)for循環(huán)進(jìn)行數(shù)組遍歷
for(i <- 0 until nums.length)
println(nums(i))
}
}
執(zhí)行結(jié)果:
1.增強(qiáng)for循環(huán),參見變長數(shù)組的代碼
2.好用的until會(huì)生成腳標(biāo),0 until 10 包含0不包含10 參見定長數(shù)組部分代碼4.1.4. 數(shù)組轉(zhuǎn)換
yield關(guān)鍵字將原始的數(shù)組進(jìn)行轉(zhuǎn)換會(huì)產(chǎn)生一個(gè)新的數(shù)組,原始的數(shù)組不變
bject ArrayTransfer {
def main(args: Array[String]): Unit = {
//使用for推導(dǎo)式生成一個(gè)新的數(shù)組
val a = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
val res1 = for(elem <- a) yield 2*elem
for(elem <- res1)
print(elem+" ")
println()
//對(duì)原數(shù)組元素過濾后生成一個(gè)新的數(shù)組
//將偶數(shù)取出乘以10后再生成一個(gè)新的數(shù)組
val res2 = for(elem <- a if elem%2 == 0)yield 2*elem
for(elem <- res2)
print(elem+" ")
println()
//使用filter和map轉(zhuǎn)換出新的數(shù)組
val res3 = a.filter(_ % 2 == 0).map(2 * _)
for(elem <- res3)
print(elem+" ")
println()
}
執(zhí)行結(jié)果:
在Scala中,數(shù)組上的某些方法對(duì)數(shù)組進(jìn)行相應(yīng)的操作非常方便!
object ArrayAlgorithm {
def main(args: Array[String]): Unit = {
val a = Array(9, 1, 2, 5, 3, 7, 8, 4)
//求和
val res1 = a.sum
println(res1)
//求最大值
val res2 = a.max
println(res2)
//排序
val res3 = a.sorted
// val res4 = a.sortWith(_>_)指定排序方式
for(elem <- res3)
print(elem + " ")
}
}
執(zhí)行結(jié)果:
感謝各位的閱讀,以上就是“Scala中怎么定長數(shù)組”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Scala中怎么定長數(shù)組這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。