轉(zhuǎn)換集合
| 操作 | 實(shí)例 | 描述 |
|---|---|---|
| mkString | List(24,99,104).mkString(",") | 使用給定分隔符將一個集合呈現(xiàn)為Set |
| toBuffer | List("f",'t').toBuffer | 將一個不可變的集合轉(zhuǎn)換位一個可變的集合 |
| toList | Map("a"->1,'b'->2).toList | 將一個集合轉(zhuǎn)換為list |
| toMap | Set(1->true,3->true).toMap | 將一個2元元組的集合轉(zhuǎn)換為一個Map |
| toSet | List(2,5,5,3,2).toSet | 將一個集合轉(zhuǎn)換為一個Set |
| toString | List(2,5,5,3,2).toString | 將一個集合呈現(xiàn)為一個String,包括集合的類型 |
Java和Scala轉(zhuǎn)換
import collection.JavaConverters._
| 操作 | 實(shí)例 | 描述 |
|---|---|---|
| asJava | List(12,29).asJava | 將這個Scala集合轉(zhuǎn)換為一個相應(yīng)的Java集合 |
| asScala | new java.util.ArrayList(5).asScala | 將這個Java集合轉(zhuǎn)換為一個相應(yīng)的Scala集合 |
使用集合的模式匹配
//匹配表達(dá)式
val statuses = List(500,404)
val msg = statuses.head match {
case x if x < 500 => "Okay"
case _ => "whoah,an error"
}
//模式哨位
val msg = statuses match {
case x if x contains(500) => "has error"
case _ => "okay"
}
//
val msg = statuses match {
case List(404,500) => "not found & error"
case List(500,404) => "error & not found "
case List(200,200) => "okay"
case _ => "not sure what happened"
}
//值綁定
val msg = statuses match {
case List(500,x) => s"Error followed by $x"
case List(e,x) => s"$e was followed by $x"
}
// 模式匹配表頭
val head = List('r','g','b') match {
case k::a => k
case Nil => " "
}
// 模式匹配表尾
val head = List('r','g','b') match {
case k::a::d::Nil => d
case Nil => ""
}
//元組的模式匹配
val code = ("h",204,true) match {
case (_,_,false) => 501
case ("c",_,false) => 501
case ("h",x,true) => x
case (c,x,true) => {
println(s"Did not expect code $c")
x
}
}
可變集合
val m = Map("AAPL" -> 597,"MSFT" -> 40)
val n = m - "AAPL" +("GOOG" -> 521)
//collection.mutable.BUffer是一個通用的可變序列,支持在開頭/中間或末尾增加元素
val nums = collection.mutable.Buffer(1)
for (i <- 2 to 10) nums += i
val nums = collection.mutable.Buffer[Int]()
for (i <- 1 to 10) nums += i
val l = nums.toList
//不可變幾個都可以通過toBuffer方法轉(zhuǎn)換成可變的collection.mutable.Buffer類型
val m = Map("AAPL" -> 597,"MSFT" -> 40)
val b = m.toBuffer
b trimStart 1 //從緩沖區(qū)開頭刪除一項(xiàng)或多項(xiàng)
b += ("GOOG" -> 521)
val n = b.toMap
使用集合構(gòu)建器
Builder是Buffer的一個簡化形式,僅限于生成指定類型的集合類型,而且只支持追加操作。
val b =Set.newBuilder[Char]
b += 'h' //增加一項(xiàng)
b ++= List('e','l','l','o') //增加多項(xiàng)
val helloSet = b.result //與緩沖區(qū)不同,構(gòu)建器知道相應(yīng)的不可變類型