[scala-spark]7. list 与 map
1. list
Scala 語言中提供的數(shù)組是用來存儲固定大小的同類型元素,數(shù)組對于每一門編輯應語言來說都是重要的數(shù)據結構之一。聲明數(shù)組變量并不是聲明 number0、number1、...、number99 一個個單獨的變量,而是聲明一個就像 numbers 這樣的變量,然后使用 numbers[0]、numbers[1]、...、numbers[99] 來表示一個個單獨的變量。數(shù)組中某個指定的元素是通過索引來訪問的。數(shù)組的第一個元素索引為0,最后一個元素的索引為元素總數(shù)減1。
- 聲明數(shù)組
以上語法中,z 聲明一個字符串類型的數(shù)組,數(shù)組長度為 3 ,可存儲 3 個元素。我們可以為每個元素設置值,并通過索引來訪問每個元素,如下所示:
z(0) = "Runoob"; z(1) = "Baidu"; z(4/2) = "Google"最后一個元素的索引使用了表達式?4/2?作為索引,類似于?z(2) = "Google"。
最好的方式就是定義就初始化:
var z = Array("Runoob", "Baidu", "Google")- 數(shù)組的處理方法
數(shù)組的元素類型和數(shù)組的大小都是確定的,所以當處理數(shù)組元素時候,我們通常使用基本的 for 循環(huán)。
object Test {def main(args: Array[String]) {var myList = Array(1.9, 2.9, 3.4, 3.5)// 輸出所有數(shù)組元素for ( x <- myList ) {println( x )}// 計算數(shù)組所有元素的總和var total = 0.0;for ( i <- 0 to (myList.length - 1)) {total += myList(i);}println("總和為 " + total);// 查找數(shù)組中的最大元素var max = myList(0);for ( i <- 1 to (myList.length - 1) ) {if (myList(i) > max) max = myList(i);}println("最大值為 " + max);} }- 多維數(shù)組
多維數(shù)組一個數(shù)組中的值可以是另一個數(shù)組,另一個數(shù)組的值也可以是一個數(shù)組。矩陣與表格是我們常見的二維數(shù)組。
import Array._object Test {def main(args: Array[String]) {var myMatrix = ofDim[Int](3,3)// 創(chuàng)建矩陣for (i <- 0 to 2) {for ( j <- 0 to 2) {myMatrix(i)(j) = j;}}// 打印二維陣列for (i <- 0 to 2) {for ( j <- 0 to 2) {print(" " + myMatrix(i)(j));}println();}} }- 數(shù)組的合并
2. map
Map(映射)是一種可迭代的鍵值對(key/value)結構。所有的值都可以通過鍵來獲取。Map 中的鍵都是唯一的。Map 也叫哈希表(Hash tables)。Map 有兩種類型,可變與不可變,區(qū)別在于可變對象可以修改它,而不可變對象不可以。默認情況下 Scala 使用不可變 Map。如果你需要使用可變集合,你需要顯式的引入?import scala.collection.mutable.Map?類
在 Scala 中 可以同時使用可變與不可變 Map,不可變的直接使用 Map,可變的使用 mutable.Map。以下實例演示了不可變 Map 的應用:
// 空哈希表,鍵為字符串,值為整型 var A:Map[Char,Int] = Map()// Map 鍵值對演示 val colors = Map("red" -> "#FF0000", "azure" -> "#F0FFFF")- 基本操作
| keys | 返回 Map 所有的鍵(key) |
| values | 返回 Map 所有的值(value) |
| isEmpty | 在 Map 為空時返回true |
輸出結果:
colors 中的鍵為 : Set(red, azure, peru) colors 中的值為 : MapLike(#FF0000, #F0FFFF, #CD853F) 檢測 colors 是否為空 : false 檢測 nums 是否為空 : true- map合并
可以使用?++?運算符或?Map.++()?方法來連接兩個 Map,Map 合并時會移除重復的 key。兩個 Map 合并的實例:
object Test {def main(args: Array[String]) {val colors1 = Map("red" -> "#FF0000","azure" -> "#F0FFFF","peru" -> "#CD853F")val colors2 = Map("blue" -> "#0033FF","yellow" -> "#FFFF00","red" -> "#FF0000")// ++ 作為運算符var colors = colors1 ++ colors2println( "colors1 ++ colors2 : " + colors )// ++ 作為方法colors = colors1.++(colors2)println( "colors1.++(colors2) : " + colors )} }輸出結果:
colors1 ++ colors2 : Map(blue -> #0033FF, azure -> #F0FFFF, peru -> #CD853F, yellow -> #FFFF00, red -> #FF0000) colors1.++(colors2) : Map(blue -> #0033FF, azure -> #F0FFFF, peru -> #CD853F, yellow -> #FFFF00, red -> #FF0000)- 打印map的keys和values : foreach
輸出結果為:
Key = runoob Value = http://www.runoob.com Key = baidu Value = http://www.baidu.com Key = taobao Value = http://www.taobao.com- map中是否存在指定的key :contains
?
總結
以上是生活随笔為你收集整理的[scala-spark]7. list 与 map的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [scala-spark]6. 继承与特
- 下一篇: SQL SERVER与ACCESS、EX