In [1]:
println(s"""Details of exec env ==>
| ${util.Properties.versionMsg}
| ${util.Properties.javaVmName} ${util.Properties.javaVersion} ${util.Properties.javaVmVersion}"""
.stripMargin)
In [2]:
def printMap(map: Map[String, _]) {
println(map.size)
map.foreach { case(key, value) =>
println(key + ": " + value)
}
}
def printMutableMap(map: scala.collection.mutable.Map[String, Int]) {
println(map.size)
map.foreach { case(key, value) =>
println(key + ": " + value)
}
}
In [3]:
val gizmos = Map[String, Int]("iPhoneX" -> 900,
"PixelXL" -> 750,
"Kindle" -> 120)
printMap(gizmos)
In [4]:
val discountedGizmos = gizmos.map { case(key, value) =>
key -> value * 0.9
}
printMap(discountedGizmos)
java.util.Scanner:val in = new java.util.Scanner(new java.io.File("myfile.txt"))
while (in.hasNext()) process in.next()
In [5]:
val mutableMap = scala.collection.mutable.HashMap.empty[String, Int].withDefaultValue(0)
val in = new java.util.Scanner(new java.io.File("Chapter_04__myfile.txt"))
while (in.hasNext()) {
val line = in.next()
val words = line.split("""\\W+""")
words.foreach { word =>
mutableMap(word) += 1
}
}
printMutableMap(mutableMap)
In [6]:
var immutableMap = Map.empty[String,Int].withDefaultValue(0)
val in = new java.util.Scanner(new java.io.File("Chapter_04__myfile.txt"))
while(in.hasNext()){
val line = in.next()
val words = line.split("""\\W+""")
words.foreach { word =>
immutableMap += word -> (immutableMap(word) + 1)
}
}
printMap(immutableMap)
In [7]:
val sortedMap = scala.collection.immutable.SortedMap.empty[String, Int] ++ immutableMap
printMap(sortedMap)
In [8]:
import scala.collection.JavaConversions.mapAsScalaMap
import java.util.TreeMap
var treeMap = new TreeMap[String, Int]()
val in = new java.util.Scanner(new java.io.File("Chapter_04__myfile.txt"))
while(in.hasNext()){
val line = in.next()
val words = line.split("""\\W+""")
words.foreach { word =>
if(treeMap.contains(word)) {
treeMap(word) += 1
} else {
treeMap(word) = 1
}
}
}
printMutableMap(treeMap)
In [9]:
import java.util.Calendar._
val weekDays = scala.collection.mutable.LinkedHashMap[String, Int](
"SUNDAY" -> SUNDAY,
"MONDAY" -> MONDAY,
"TUESDAY" -> TUESDAY,
"WEDNESDAY" -> WEDNESDAY,
"THURSDAY" -> THURSDAY,
"FRIDAY" -> FRIDAY,
"SATURDAY" -> SATURDAY
)
printMutableMap(weekDays)
java.runtime.name | Java(TM) SE Runtime Environment
sun.boot.library.path | /home/apps/jdk1.6.0_21/jre/lib/i386
java.vm.version | 17.0-b16
java.vm.vendor | Sun Microsystems Inc.
java.vendor.url | http://java.sun.com/
path.separator | :
java.vm.name | Java HotSpot(TM) Server VM
In [10]:
import scala.collection.JavaConversions.propertiesAsScalaMap
val properties: scala.collection.Map[String, String] = System.getProperties
val maxLength = properties.keys.maxBy(_.length).length
val sbd = new StringBuilder()
properties.foreach { case(key, value) =>
sbd.append(key)
.append(" " * (maxLength - key.length))
.append("|\t")
.append(value)
.append("\n")
}
println(sbd.toString)
In [11]:
val a = Array(1, 9, 121, 71, 21, -5, 15, 0, -20, 10, -6, 9, 20, -2)
def minmax(values: Array[Int]) = {
(values.min, values.max)
}
minmax(a)
Out[11]:
In [12]:
val a = Array(1, 9, 121, 71, 21, -5, 15, 0, -20, 10, -6, 9, 20, -2)
def lteqgt(values: Array[Int], v: Int) = {
(values.count(_ < v), values.count(_ == v), values.count(_ > v))
}
lteqgt(a, 10)
Out[12]:
In [13]:
"Hello".zip("World")
Out[13]: