Scala與Java差異(五)之Map與Tuple
一、 建立Map
(1)建立Map
// 建立一個不可變的Map
val ages = Map("Leo" -> 30, "Jen" -> 25, "Jack" -> 23)
ages("Leo") = 31
// 建立一個可變的Map
val ages = scala.collection.mutable.Map("Leo" -> 30, "Jen" -> 25, "Jack" -> 23)
ages("Leo") = 31
// 使用另外一種方式定義Map元素
val ages = Map(("Leo", 30), ("Jen", 25), ("Jack", 23))
// 建立一個空的HashMap
val ages = new scala.collection.mutable.HashMap[String, Int]
(2)訪問Map的元素
// 獲取指定key對應的value,如果key不存在,會報錯
val leoAge = ages("Leo")
val leoAge = ages("leo")
// 使用contains函式檢查key是否存在
val leoAge = if (ages.contains("leo")) ages("leo") else 0
// getOrElse函式
val leoAge = ages.getOrElse("leo", 0)
(3)修改Map的元素
// 更新Map的元素
ages("Leo") = 31
// 增加多個元素
ages += ("Mike" -> 35, "Tom" -> 40)
// 移除元素
ages -= "Mike"
// 更新不可變的map
val ages2 = ages + ("Mike" -> 36, "Tom" -> 40)
// 移除不可變map的元素
val ages3 = ages - "Tom"
(4)遍歷Map
// 遍歷map的entrySet
for ((key, value) <- ages) println(key + " " + value)
// 遍歷map的key
for (key <- ages.keySet) println(key)
// 遍歷map的value
for (value <- ages.values) println(value)
// 生成新map,反轉key和value
for ((key, value) <- ages) yield (value, key)
(5) SortedMap和LinkedHashMap
// SortedMap可以自動對Map的key的排序
val ages = scala.collection.immutable.SortedMap("leo" -> 30, "alice" -> 15, "jen" -> 25)
// LinkedHashMap可以記住插入entry的順序
val ages = new scala.collection.mutable.LinkedHashMap[String, Int]
ages("leo") = 30
ages("alice") = 15
ages("jen") = 25
二、Map的元素型別—Tuple
// 簡單Tuple
val t = ("leo", 30)
// 訪問Tuple
t._1
// zip操作
val names = Array("leo", "jack", "mike")
val ages = Array(30, 24, 26)
val nameAges = names.zip(ages)
for ((name, age) <- nameAges) println(name + ": " + age)
相關文章
- Scala與Java差異(三)之函式Java函式
- Scala與Java差異(二)之條件控制與迴圈Java
- Scala中的Map、Tuple、Zip
- Scala—— Set、Map、Tuple、佇列操作實戰佇列
- Linux與Windows中map類erase方法的差異LinuxWindows
- 《卸甲筆記》-PostgreSQL和Oracle的SQL差異分析之五:函式的差異(五)筆記SQLOracle函式
- java字串“==”與“equals”的差異及與c#的區別Java字串C#
- IDP 與 DevOps平臺:相似之處與關鍵差異dev
- PostgreSQL與Oracle的sql差異SQLOracle
- 【譯】框架與庫的差異框架
- Scala與Java的關係Java
- typeof、instanceof與isPrototypeOf()的差異與聯絡
- Java語言與C++語言的差異總結JavaC++
- 反向代理與正向代理差異分析
- 子查詢與join效能差異
- 《卸甲筆記》-PostgreSQL和Oracle的SQL差異分析之五:函式的差異(三)筆記SQLOracle函式
- 《卸甲筆記》-PostgreSQL和Oracle的SQL差異分析之五:函式的差異(一)筆記SQLOracle函式
- Java,Pyhon,Scala比較(一)map,reduceJava
- Scala操作Map
- Python 與 JavaScript 語法差異點PythonJavaScript
- ORACLE與MYSQL程式碼開發差異OracleMySql
- resin與jetty解析el表示式差異Jetty
- Java集合系列之Collection與Map介面巨集觀把控Java
- java啟動執行緒時 extends與implements的一個差異Java執行緒
- 資料庫差異備份與增量備份的不同之處資料庫
- 軟體測試:SVN與Git的差異Git
- 【差異】LENGTH與VSIZE的區別演示
- 【譯】Object與Map的異同及使用場景Object
- scala陣列與java陣列對比陣列Java
- 【Scala篇】--Scala初始與基礎
- 系統之間差異
- Scala 與設計模式(五):Adapter 介面卡模式設計模式APT
- openGauss資料與PostgreSQL的差異對比SQL
- java中Map,List與Set的區別Java
- 不吹不黑比對下React與Vue的差異與優劣ReactVue
- 差異化與中心化,QQ小遊戲的機遇中心化遊戲
- 【譯】 React官方:函式元件與類元件的差異 ?React函式元件
- ES6模組與commonJS模組的差異JS