好程式設計師大資料學習路線分享Scala系列之陣列
好程式設計師大資料學習路線分享Scala系列之陣列, 陣列(Array)
1. 定長陣列
建立一個定長陣列的方式
使用Array定義一個長度不變的陣列
object ArrayDemo {
def main(args: Array[String]){
//
初始化一個長度為
8
的定長陣列,其所有元素均為
0
val arr1 =
new Array[Int](8)
//
直接列印定長陣列,內容為陣列的
hashcode
值
println(arr1)
//
將陣列轉換成陣列緩衝,就可以看到原陣列中的內容了
//toBuffer
會將陣列轉換長陣列緩衝
println(arr1.toBuffer)
//
注意:如果不使用
new
獲取陣列,相當於呼叫了陣列的
apply
方法,直接為陣列賦值
//
初始化一個長度為
1
,值為
10
的定長陣列
val arr2 = Array[Int](10)
//
輸出陣列元素值
println(arr2.toBuffer)
//
定義一個長度為
3
的定長陣列
val arr3 = Array("hadoop", "storm", "spark")
//
使用
()
來訪問元素
println(arr3(2))
//
包含
10
個整數的陣列,初始化值為
0
val nums =
new Array[Int](10)
//
遍歷陣列
for(i <- 0 until nums.length)
print(s"$i:${nums(i)} ")
println()
//
包含
10
個字串的陣列,初始化值為
null
val strs0 =
new Array[String](10)
for(i <- 0 until strs0.length)
print(s"$i:${strs0(i)} ")
println()
//
賦初值的字串陣列
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
2. 變長陣列
定義變長陣列的方式:
使用 ArrayBuffer定義長度按需變化的陣列。
import scala.collection.mutable.ArrayBuffer
object VarArrayDemo {
def main(args: Array[String]){
//
定義一個空的可變長
Int
型陣列
val nums = ArrayBuffer[Int]()
//
在尾端新增元素
nums += 1
//
在尾端新增多個元素
nums += (2,3,4,5)
//
使用
++=
在尾端新增任何集合
nums ++= Array(6,7,8)
//
這些運算子,有相應的
-=
,
--=
可以做陣列的刪減,用法同
+=
,
++=
//
使用
append
追加一個或者多個元素
nums.append(1)
nums.append(2,3)
//
在下標
2
之前插入元素
nums.insert(2,20)
nums.insert(2,30,30)
//
移除最後
2
元素
nums.trimEnd(2)
//
移除最開始的一個或者多個元素
nums.trimStart(1)
//
從下標
2
出移除一個或者多個元素
nums.remove(2)
nums.remove(2,2)
//
使用增強
for
迴圈進行陣列遍歷
for(elem <- nums)
println(elem)
//
基於下標訪問使用增強
for
迴圈進行陣列遍歷
for(i <- 0 until nums.length)
println(nums(i))
}
}
執行結果:
3. 遍歷陣列
1.增強for迴圈,參見變長陣列的程式碼
2.好用的until會生成腳標,0 until 10 包含0不包含10 參見定長陣列部分程式碼4.1.4. 陣列轉換
4. 陣列轉換
yield關鍵字將原始的陣列進行轉換會產生一個新的陣列,原始的陣列不變
bject ArrayTransfer {
def main(args: Array[String]): Unit = {
//
使用
for
推導式生成一個新的陣列
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()
//
對原陣列元素過濾後生成一個新的陣列
//
將偶數取出乘以
10
後再生成一個新的陣列
val res2 =
for(elem <- a
if elem%2 == 0)
yield 2*elem
for(elem <- res2)
print(elem+" ")
println()
//
使用
filter
和
map
轉換出新的陣列
val res3 = a.filter(_ % 2 == 0).map(2 * _)
for(elem <- res3)
print(elem+" ")
println()
}
執行結果:
5. 陣列常用演算法
在Scala中,陣列上的某些方法對陣列進行相應的操作非常方便!
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 + " ")
}
}
執行結果:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2655873/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師大資料學習路線分享Scala系列之物件程式設計師大資料物件
- 好程式設計師大資料學習路線分享Scala系列之抽象類程式設計師大資料抽象
- 好程式設計師大資料學習路線分享Scala系列之泛型程式設計師大資料泛型
- 好程式設計師大資料學習路線分享spark之Scala程式設計師大資料Spark
- 好程式設計師大資料學習路線分享Scala系列之對映Map程式設計師大資料
- 好程式設計師大資料學習路線分享Scala系列之基礎篇程式設計師大資料
- 好程式設計師大資料學習路線分享Scala系列之集合操作函式程式設計師大資料函式
- 好程式設計師大資料學習路線分享scala單列和伴生物件程式設計師大資料物件
- 好程式設計師大資料學習路線分享Scala分支和迴圈程式設計師大資料
- 好程式設計師大資料學習路線分享大資料之字串程式設計師大資料字串
- 好程式設計師大資料學習路線分享MAPREDUCE程式設計師大資料
- 好程式設計師大資料學習路線分享SparkSQl程式設計師大資料SparkSQL
- 好程式設計師大資料教程分享Scala系列之閉包程式設計師大資料
- 好程式設計師大資料分享Scala系列之柯里化程式設計師大資料
- 好程式設計師大資料學習路線分享大資料之執行緒程式設計師大資料執行緒
- 好程式設計師大資料學習路線分享Hbase指令學習程式設計師大資料
- 好程式設計師大資料學習路線分享大資料之基礎語法程式設計師大資料
- 好程式設計師大資料教程Scala系列之類程式設計師大資料
- 好程式設計師大資料學習路線分享Map學習筆記程式設計師大資料筆記
- 好程式設計師大資料學習路線分享HDFS學習總結程式設計師大資料
- 好程式設計師大資料學習路線分享hdfs學習乾貨程式設計師大資料
- 好程式設計師大資料學習路線分享Actor學習筆記程式設計師大資料筆記
- 好程式設計師大資料學習路線分享Lambda表示式程式設計師大資料
- 好程式設計師大資料學習路線分享UDF函式程式設計師大資料函式
- 好程式設計師大資料學習路線分享HDFS讀流程程式設計師大資料
- 好程式設計師大資料學習路線分享AWK詳解程式設計師大資料
- 好程式設計師大資料學習路線之mapreduce概述程式設計師大資料
- 好程式設計師大資料培訓分享spark之Scala程式設計師大資料Spark
- 好程式設計師大資料學習路線Hadoop學習乾貨分享程式設計師大資料Hadoop
- 好程式設計師大資料教程Scala系列之繼承程式設計師大資料繼承
- 好程式設計師大資料教程分享實用的大資料之陣列程式設計師大資料陣列
- 好程式設計師大資料學習路線分享高階函式程式設計師大資料函式
- 好程式設計師大資料學習路線之zookeeper乾貨程式設計師大資料
- 好程式設計師大資料學習路線分享TCP和UDP學習筆記程式設計師大資料TCPUDP筆記
- 好程式設計師大資料學習路線分享Hadoop機架感知程式設計師大資料Hadoop
- 好程式設計師大資料學習路線分享什麼是Hash表程式設計師大資料
- 好程式設計師大資料學習路線分享hive的執行方式程式設計師大資料Hive
- 好程式設計師大資料學習路線分享MapReduce全流程總結程式設計師大資料