日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[scala-spark]7. list 与 map

發布時間:2025/3/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [scala-spark]7. list 与 map 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. list

Scala 語言中提供的數組是用來存儲固定大小的同類型元素,數組對于每一門編輯應語言來說都是重要的數據結構之一。聲明數組變量并不是聲明 number0、number1、...、number99 一個個單獨的變量,而是聲明一個就像 numbers 這樣的變量,然后使用 numbers[0]、numbers[1]、...、numbers[99] 來表示一個個單獨的變量。數組中某個指定的元素是通過索引來訪問的。數組的第一個元素索引為0,最后一個元素的索引為元素總數減1。

  • 聲明數組
var z:Array[String] = new Array[String](3) // 或 var z = new Array[String](3)

以上語法中,z 聲明一個字符串類型的數組,數組長度為 3 ,可存儲 3 個元素。我們可以為每個元素設置值,并通過索引來訪問每個元素,如下所示:

z(0) = "Runoob"; z(1) = "Baidu"; z(4/2) = "Google"

最后一個元素的索引使用了表達式?4/2?作為索引,類似于?z(2) = "Google"

最好的方式就是定義就初始化:

var z = Array("Runoob", "Baidu", "Google")
  • 數組的處理方法

數組的元素類型和數組的大小都是確定的,所以當處理數組元素時候,我們通常使用基本的 for 循環。

object Test {def main(args: Array[String]) {var myList = Array(1.9, 2.9, 3.4, 3.5)// 輸出所有數組元素for ( x <- myList ) {println( x )}// 計算數組所有元素的總和var total = 0.0;for ( i <- 0 to (myList.length - 1)) {total += myList(i);}println("總和為 " + total);// 查找數組中的最大元素var max = myList(0);for ( i <- 1 to (myList.length - 1) ) {if (myList(i) > max) max = myList(i);}println("最大值為 " + max);} }
  • 多維數組

多維數組一個數組中的值可以是另一個數組,另一個數組的值也可以是一個數組。矩陣與表格是我們常見的二維數組。

import Array._object Test {def main(args: Array[String]) {var myMatrix = ofDim[Int](3,3)// 創建矩陣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();}} }
  • 數組的合并
import Array._object Test {def main(args: Array[String]) {var myList1 = Array(1.9, 2.9, 3.4, 3.5)var myList2 = Array(8.9, 7.9, 0.4, 1.5)var myList3 = concat( myList1, myList2)// 輸出所有數組元素for ( x <- myList3 ) {println( x )}} }

2. map

Map(映射)是一種可迭代的鍵值對(key/value)結構。所有的值都可以通過鍵來獲取。Map 中的鍵都是唯一的。Map 也叫哈希表(Hash tables)。Map 有兩種類型,可變與不可變,區別在于可變對象可以修改它,而不可變對象不可以。默認情況下 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
object Test {def main(args: Array[String]) {val colors = Map("red" -> "#FF0000","azure" -> "#F0FFFF","peru" -> "#CD853F")val nums: Map[Int, Int] = Map()println( "colors 中的鍵為 : " + colors.keys )println( "colors 中的值為 : " + colors.values )println( "檢測 colors 是否為空 : " + colors.isEmpty )println( "檢測 nums 是否為空 : " + nums.isEmpty )} }

輸出結果:

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
object Test {def main(args: Array[String]) {val sites = Map("runoob" -> "http://www.runoob.com","baidu" -> "http://www.baidu.com","taobao" -> "http://www.taobao.com")sites.keys.foreach{ i => print( "Key = " + i )println(" Value = " + sites(i) )}} }

輸出結果為:

Key = runoob Value = http://www.runoob.com Key = baidu Value = http://www.baidu.com Key = taobao Value = http://www.taobao.com
  • map中是否存在指定的key :contains
object Test {def main(args: Array[String]) {val sites = Map("runoob" -> "http://www.runoob.com","baidu" -> "http://www.baidu.com","taobao" -> "http://www.taobao.com")if( sites.contains( "runoob" )){println("runoob 鍵存在,對應的值為 :" + sites("runoob"))}else{println("runoob 鍵不存在")}if( sites.contains( "baidu" )){println("baidu 鍵存在,對應的值為 :" + sites("baidu"))}else{println("baidu 鍵不存在")}if( sites.contains( "google" )){println("google 鍵存在,對應的值為 :" + sites("google"))}else{println("google 鍵不存在")}} }

?

總結

以上是生活随笔為你收集整理的[scala-spark]7. list 与 map的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。