Scala 05 集合(二)Set、Map、Tuple、Option

1 Set :無序,不可重複

scala> val s = Set(1, 2, 3, 1, 2, 5, 6)
s: scala.collection.immutable.Set[Int] = Set(5, 1, 6, 2, 3)

// 可變Set
scala> val set = scala.collection.mutable.Set[Int]()
set: scala.collection.mutable.Set[Int] = Set()

scala> set += 1
res53: set.type = Set(1)

scala> set += (1, 2, 3, 4)
res54: set.type = Set(1, 2, 3, 4)

2 Map

// 定義一個Map
scala> val students = Map("lisi" -> "class 1", "zhangsan" -> "class 2", "wanger" -> "class 3")
students: scala.collection.immutable.Map[String,String] = Map(lisi -> class 1, zhangsan -> class 2, wanger -> class 3)

// Map的key
scala>   students.keys
res55: Iterable[String] = Set(lisi, zhangsan, wanger)

// Map的value
scala>   students.values
res56: Iterable[String] = MapLike(class 1, class 2, class 3)

scala>   students.isEmpty
res57: Boolean = false

// 定義一個可變的Map
scala>   val students2 = scala.collection.mutable.Map[String, String]()
students2: scala.collection.mutable.Map[String,String] = Map()

scala>   students2 += ("zhaosi" -> "class 4")
res58: students2.type = Map(zhaosi -> class 4)

// 合併兩個Map,結果是可變的Map
scala>   students ++ students2
res59: scala.collection.immutable.Map[String,String] = Map(lisi -> class 1, zhangsan -> class 2, wanger -> class 3, zhaosi -> class 4)

// 遍歷Map
scala>   students.keys.foreach { i =>
     |     print("key = " + i)
     |     println("value = " + students(i))
     |   }
key = lisivalue = class 1
key = zhangsanvalue = class 2
key = wangervalue = class 3

scala>
     |   students.contains("lisi")
res62: Boolean = true

3 Tuple:不可變,可以包含不同類型的元素

// 定義tuple
scala> val t = (1, 3.14, "lisi")
t: (Int, Double, String) = (1,3.14,lisi)

scala> val t2 = Tuple3(1, 3.14, "zhangsan")
t2: (Int, Double, String) = (1,3.14,zhangsan)

// 遍歷tuple
scala> t.productIterator.foreach { i => println("value = " + i) }
value = 1
value = 3.14
value = lisi

// 通過下標訪問元素
scala> t._1
res66: Int = 1

scala> t._2
res67: Double = 3.14

// 轉換成字符串
scala> t.toString()
res68: String = (1,3.14,lisi)

4 Option:用來表示一個值是可選的

Option[T] 是一個類型爲 T 的可選值的容器: 如果值存在, Option[T] 就是一個 Some[T] ,如果不存在, Option[T] 就是對象 None 。

scala> val students = Map("lisi" -> "class 1", "zhangsan" -> "class 2", "wanger" -> "class 3")
students: scala.collection.immutable.Map[String,String] = Map(lisi -> class 1, zhangsan -> class 2, wanger -> class 3)

scala> students.get("list")
res69: Option[String] = None

scala> students.get("lisi")
res70: Option[String] = Some(class 1)
scala> val o1=Some(5)
o1: Some[Int] = Some(5)

scala> val o2=None
o2: None.type = None

scala> o1.getOrElse(0)
res72: Int = 5

// 沒有取到值就使用給定的值
scala>  o2.getOrElse(10)
res73: Int = 10
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章