代码如下
val equipment_i_want = Map(
"Kindle Oasis" -> 2499,
"Macbook Pro" -> 12800,
"violin" -> 3200
)
val discount_equipment = for ((k,v) <- equipment_i_want) yield(k,v*.9)
println( discount_equipment )
代码如下
val in = new java.util.Scanner( new java.io.File( "/tmp/pep-3136.txt" ) )
val s = new scala.collection.mutable.HashMap[String,Int]
while( in.hasNext() ) {
val word = in.next()
s.update( word, s.getOrElse( word, 0 ) + 1 )
}
println(s)
代码如下
val in = new java.util.Scanner( new java.io.File( "/tmp/pep-3136.txt" ) )
val s = new scala.collection.immutable.HashMap[String,Int]
while( in.hasNext ) {
val word = in.next
s = s + ((word, s.getOrElse( word, 0 ) + 1))
}
println(s)
同上,将 HashMap
替换为 TreeMap
val in = new java.util.Scanner( new java.io.File( "/tmp/pep-3136.txt" ) )
val s = new scala.collection.immutable.TreeMap[String,Int]
while( in.hasNext ) {
val word = in.next
s = s + ((word, s.getOrElse( word, 0 ) + 1))
}
println(s)
如下,scala 中没有可变的 TreeMap
,无法保证其顺序
import scala.collection.JavaConversions._
val in = new java.util.Scanner( new java.io.File( "/tmp/pep-3136.txt" ) )
val s: scala.collection.mutable.Map[String,Int] = new java.util.TreeMap[String,Int]
while( in.hasNext() ) {
val word = in.next()
s.update( word, s.getOrElse( word, 0 ) + 1 )
}
println(s)
代码如下
val h = new scala.collection.mutable.LinkedHashMap[String,Int]
h += ("Monday" -> java.util.Calendar.MONDAY); println( h )
h += ("Tuseday"-> java.util.Calendar.TUESDAY); pritnln( h )
h += ("Sunday" -> java.util.Calendar.SUNDAY); println( h )
代码如下
val props = System.getProperties
val fmt = "%%-%ds | %%s\n".format( props.map( _._1.length ).max + 3 )
for ( (k,v) <- props ) { printf( fmt,k,v) }
函数如下
def minmax( values: Array[Int] ): Tuple2[Int,Int] = {
(values.min, values.max)
}
函数如下
def lteqgt( values: Array[Int], v: Int ): Tuple3[ Int, Int, Int ] = {
val lt = values.filter( _ < v ).size
val eq = values.filter( _ == v ).size
( lt, eq, values.size - lt - eq )
}
将会生成 ((H,W), (e,o), (l,r,), (l,l), (o,d))
的 Vector
对象。zip
的作用是拼接两个序列中的每对元素(按最小长度),形成一个 Pair 的列表