val a = ("johnny", 2016, "yang")
val b = ("johnny","yang") //最簡單的元組:對偶
val yzsecond1 = yz._2//取出第二個元素
val yzsecond2 = yz _2;
println("第二個值是" + yzsecond1)
println("第二個值是" + yzsecond2)
// 使用模式匹配
val (first, second, _) = yz
println("first:" + first + ";second:" + second)
}
元組取值和陣列不一樣,yz._1表示取出第乙個元素
scala中map(對映)分為可變對映和不可變對映兩種,預設建立不可變對映。
// 構建擁有3個對偶的不可變對映
val map1 = map("alice" -> 10, "bob" -> 3, "cindy" -> 8)
// 構建空的對映可變對映
val map2 = new scala.collection.mutable.hashmap[string, int] //這裡指定對映實現為hashmap,型別引數為string和int
// 構建擁有3個對偶的可變對映
val map3 = scala.collection.mutable.map("alice" -> 10, "bob" -> 3, "cindy" -> 8)
// 通過對偶建立對映
val map4 = map(("alice", 10), ("bob", 3), ("cindy", 8))
「->」 符號用於建立對偶
「alice」 -> 10 會生成 (「alice」,10)
取值
val arg1 = m("bob")
// scala直接通過 對映(鍵) 來獲取元素,通過 對映.get(鍵) 得到的是乙個option物件
val arg2 = if (m.contains("bob")) m("bob") else
0// 如果不存在會丟擲異常,因此需要作出檢查
val arg3 = m.getorelse("bob", 0)// 同上,但是不會報錯,如果沒有"bob"會返回0
更新/*更新可變對映*/
m("bob") =
10 m +=("bob"
->
10, "fred"
->
15) //有就更新,沒有就插入
m -=
"bob"
// 移除
} /*更新不可變對映*/
val newmap = m + ("bob"
->
10, "fred"
->
16) // 更新不可變對映會建立新的對映,newmap 包含 m 相同對映關係,然後bob被更新,fred被新增進來
遍歷/*遍歷對映*/
for ((k, v) <- m) println("k:" + k + ";v:" + v)
for ((k, v) <- m) yield (v, k)//返回乙個集合,鍵值反轉
/*遍歷對映的鍵*/
for (k <- m.keyset) print("k:" + k)
/*遍歷對映的值*/
for (v <- m.values) print("v:" + v)
// 拉鍊操作
val symbols = array("<", "-", ">")
val counts = array(2, 10, 2)
val pairs = symbols.zip(counts) // 輸出對偶的陣列 array(("<",2),("-",10),(">",2))
for ((s, n) <- pairs) console.print(s * n) // 輸出:<<-------->>
val m = pairs.tomap // 轉化成對映
mapiterate(m)//遍歷
拉鍊操作步驟:
建立兩個陣列,arra用於存放鍵,arrb用於存放值
使用arra.zip(arrb)來生成乙個新的對偶陣列arrc
使用陣列的tomap方法將對偶陣列轉化成對映
需要注意的:
scala.collection.mutable 和 scala.collection.immutable 中hashmap和map的區別
package yangjun.mypackage
import yangjun.myclass.person
import scala.collection.mutable //可變的
import scala.collection.immutable //不可變的
/** * created by yang jun on 2016/7/23.
*/object
test
def demo001(): unit =
def demo002(): unit =
def demo003(): unit =
def demo004(): unit =
}
詳見
scala練習題 Scala基礎
1 在scala repl中,計算3的平方根,然後再對該值求平方。現在,這個結果與3相差多少?scala scala.math.sqrt 3 warning there were 1 deprecation warnings re run with deprecation for details r...
Scala基礎學習 scala集合 005
定長陣列 println test val a new array string 5 a.length a 0 hello 賦值 a 1 取值 b 1 flink 可以修改值,並沒有修改指標 val c array 1,2,3,4,5,6 c.mkstring 轉換為字串 c.mkstring c....
scala快速上手 二 Scala 基礎
定義變數和常量 變數 用 var 定義 可修改 常量 用 val 定義,不可修改 var name zhangsan println name name lisi println name val gender m gender m 錯誤,不能給常量再賦值 class person object l...