Scala入門系列(四):Map & Tuple


Map

  1. 創建Map

   
   
   
           
// 創建一個不可變的Map
scala> val ages = Map( "Leo" -> 30, "Sparks" -> 25)
ages: scala.collection.immutable. Map[ String, Int] = Map( Leo -> 30, Sparks -> 25)
// 創建一個可變的Map
scala> val ages = scala.collection.mutable. Map( "Leo" -> 20, "JEN" -> 23)
ages: scala.collection.mutable. Map[ String, Int] = Map( JEN -> 23, Leo -> 20)
scala> ages( "Leo") = 31
// 使用另外一種方式定義Map元素
scala> val ages = Map(( "leo", 30), ( "sparks", 20))
ages: scala.collection.immutable. Map[ String, Int] = Map(leo -> 30, sparks -> 20)
// 創建一個空的HashMap,必須是實現類而不是抽象接口
scala> val ages = new scala.collection.mutable. HashMap[ String, Int]
ages: scala.collection.mutable. HashMap[ String, Int] = Map()

  1. 訪問Map元素

   
   
   
           
// 使用contains函數檢查key是否存在
scala> val leoAge = if (ages.contains( "Leo")) ages( "Leo") else 0
leoAge: Int = 0
// getOrElse函數
scala> val leoAge = ages.getOrElse( "Leo", 0)
leoAge: Int = 0

  1. 修改Map元素

   
   
   
           
// 添加或者更新元素
scala> ages( "Leo") = 31
// 添加多個元素
scala> ages += ( "Mike" -> 34, "Tom" -> 40)
// 移除元素
scala> ages -= "Mike"
// 變相更新不可變map
scala> val ages2 = ages + ( "Mike" -> 34, "Tom" -> 40)

  1. 遍歷Map

   
   
   
           
// 遍歷map的entrySet
scala> for((key, value) <- ages) println(key + " " + value)
// 遍歷key
scala> for(key <- ages.keySet) println(key)
// 遍歷value
scala> for(value <- ages.values) println(value)
// 生成新map,反轉key和value
scala> for((key, value) <- ages) yield (value, key)

  1. SortedMap & LinkedHashMap

   
   
   
           
// SortedMap可以自動對Map的key排序,按照字母順序
scala> val ages = scala.collection.immutable. SortedMap( "leo" -> 30, "alice" -> 15)
ages: scala.collection.immutable. SortedMap[ String, Int] = Map(alice -> 15, leo -> 30)
// LinkedHashMap可以記住插入entry的順序
scala> val ages = new scala.collection.mutable. LinkedHashMap[ String, Int]
ages: scala.collection.mutable. LinkedHashMap[ String, Int] = Map()
scala> ages( "leo") = 30
scala> ages( "Sparks") = 20
scala> ages
res70: scala.collection.mutable. LinkedHashMap[ String, Int] = Map(leo -> 30, Sparks -> 20)

元組Tuple

Scala元組將固定數量的項目組合在一起,以便它們可以作為一個整體傳遞。 與數組或列表不同,元組可以容納不同類型的對象,但它們也是不可變的。(可以用作自定義數據類型)


   
   
   
           
// 創建Tuple
scala> val t = ( "leo", 30, "hello")
t: ( String, Int, String) = (leo, 30,hello)
// 訪問Tuple
scala> t._1


   
   
   
           
// zip操作
scala> val names = Array( "leo", "jack", "mike")
names: Array[ String] = Array(leo, jack, mike)
scala> val ages = Array( 30, 24, 25)
ages: Array[ Int] = Array( 30, 24, 25)
scala> val nameAges = names.zip(ages)
nameAges: Array[( String, Int)] = Array((leo, 30), (jack, 24), (mike, 25))
scala> for ((name, age) <- nameAges) println(name + ":" + age)
leo: 30
jack: 24
mike: 25


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM