scala學(xué)習(xí)(7)

轉(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)的不可變類型
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • scala學(xué)習(xí)筆記 第2章 變量和數(shù)據(jù)類型 基本數(shù)據(jù) scala的核心數(shù)據(jù)為四種 :字面量、值、變量、類型 值使...
    485b1aca799e閱讀 2,249評論 0 1
  • Spark SQL, DataFrames and Datasets Guide Overview SQL Dat...
    草里有只羊閱讀 18,561評論 0 85
  • 可變和不可變集合 Scala中的集合可分為可變集合和不可變集合??勺兗峡梢援?dāng)場被更新,不可變集合本身是不可變的。...
    liqing151閱讀 325評論 0 0
  • Scala的集合類可以從三個維度進(jìn)行切分: 可變與不可變集合(Immutable and mutable coll...
    時待吾閱讀 5,961評論 0 4
  • 讀《快學(xué)Scala 》一書的摘要 Scala 運(yùn)行于JVM之上,擁有海量類庫和工具,兼顧函數(shù)式編程和面向?qū)ο蟆?在...
    abel_cao閱讀 1,383評論 0 8

友情鏈接更多精彩內(nèi)容