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