Scala集合——Array,Map,Seq,Set
2497 ワード
val i = 100
val s = "hello world"
println(f"$i%5s$s%18s")
100 hello world
# ,
1. Array
val a = Array(1, 2, 3)
val a = Array(0, 0, 1, 0)
a.indexOf(1)
# 2
val a = Array(0, 0, 1, 1)
a.indexOf(1)
# 2
# Python list index()
val buf = a.toBuffer
val arr = buf.toArray
2. Map
ScalaのMapクラスは、コンテンツのキーまたは値に基づいてソートする方法を提供していません.MapをScalaのSeqタイプに変換することができ、Seqはソートをサポートします.
例えばcountByValue()はscalaを得る.collection.Map[String,Long]のMap集合は、Value(つまり出現回数)に従って並べ替える場合はtoSeqを呼び出してSeqタイプに変換する必要があります.
rawData.map(_.split(',').last).countByValue().toSeq.sortBy(_._2).reverse.foreach(println)
ScalaのSeqクラスはJavaのListインタフェースと類似しており,いずれも反復可能な集合であり,すなわち決定された長さを有し,下付き文字に基づいて値を検索することができる.
seq.sortBy(_._1).foreach(println)
# _1:
seq.sortBy(_._2).reverse.foreach(println)
# _2:
3. Seq
4. Set
scala> Set(1,2,3) & Set(2,4) // & interset
scala> Set(1,2,3) intersect Set(2,4)
scala> Set(1,2,3) ++ Set(2,4)
scala> Set(1,2,3) | Set(2,4) // | union
scala> Set(1,2,3) union Set(2,4)
scala> Set(1,2,3) -- Set(2,4) // Set(1,3)
scala> Set(1,2,3) &~ Set(2,4)
scala> Set(1,2,3) diff Set(2,4)
//
scala> Set(1,2,3) + (2,4)
scala> Set(1,2,3) - (2,4)
def foldLeft[B](z: B)(op: (B, A) => B): B = {
var result = z
this.seq foreach (x => result = op(result, x))
result
}
def foldRight[B](z: B)(op: (A, B) => B): B =
reversed.foldLeft(z)((x, y) => op(y, x))
// for internal use
protected[this] def reversed = {
var elems: List[A] = Nil
self.seq foreach (elems ::= _)
elems
}
の呼び出し方法:> val arr = Array(("", 1), ("", 2), ("", 2))
#
> arr.foldLeft(0)(_ + _._2)
6
# foldLeft
#