package scala.org.scalaTest4
import scala.util.Random
/**
* Created by wuyanru on 2017/1/5.
* 映射和元组
* 1. 设置一个映射,其中包含你想要的一些装备,以及它们的价格。
* 然后构建另一个映射,采用同一组键,但在价格上打9折
*/
object test1 extends App{
val map=Map("Computer"->3000,"Iphone"->2000,"cpu"->500)
val fold=for((k,v)<-map) yield (k,v*0.9)
fold.foreach(println)
}
package scala.org.scalaTest4
import java.util
import scala.collection.mutable.HashMap
/**
* Created by wuyanru on 2017/1/5.
* 映射和元组
* 2. 编写一段程序,从文件中读取单词。用一个可变映射来清点每一个单词出现的频率。读取这些单词的操作可以使用Java.utiI.Scanner:
*val in=new java.util.Scanner(new java.io.File("myfile.txt"))
*while (in.hasNext()) 处理in .next()
*最后,打印出所有单词和它们出现的次数
*首先,新建一个file文件,文件名为:file,文件内容如下:是以空格或者回车来分割的
*Hello Hello
*World Hello Scala
*/
object test2 extends App{
val in=new java.util.Scanner(new java.io.File("src/file"))
val maps = new HashMap[String,Int]
var key:String=null
while(in.hasNext){
key=in.next()
maps(key)=maps.getOrElse(key,0)+1
}
maps.foreach(println)
}
package scala.org.scalaTest4
import scala.collection.mutable.Map
/**
* Created by wuyanru on 2017/1/5.
* 映射和元组
* 3 重复前一个练习,这次用不可变的映射
*/
object test3 extends App{
val in=new java.util.Scanner(new java.io.File("src/file"))
var maps = Map[String,Int]()
var key:String=null
while(in.hasNext){
key=in.next()
maps(key)=maps.getOrElse(key,0)+1
}
maps.foreach(println)
}
package scala.org.scalaTest4
import scala.collection._
/**
* Created by wuyanru on 2017/1/5.
* 映射和元组
* 4. 重复前一个练习,这次用已排序的映射,以便单词可以按顺序打印出来
*/
object test4 extends App{
val in=new java.util.Scanner(new java.io.File("src/file"))
var sortMap= SortedMap[String,Int]()
var key:String=null
while(in.hasNext){
key=in.next()
sortMap+=(key -> (sortMap.getOrElse(key,0)+1))
}
sortMap.foreach(println)
}
package scala.org.scalaTest4
import scala.collection.mutable.LinkedHashMap
import java.util
import scala.collection.JavaConversions.propertiesAsScalaMap
/**
* Created by wuyanru on 2017/1/5.
* 映射和元组
* 7. 打印出所有Java系统属性的表格,类似这样:
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
你需要找到最长键的长度才能正确地打印出这张表格
*/
object test5 extends App{
val props:scala.collection.Map[String,String]=System.getProperties()
val keys=props.keySet
val keylens=for(i<-keys) yield i.length()
val keymaxlen=keylens.max
for(key<- keys){
print(key)
print("__"*(keymaxlen-key.length()))
print("|")
println(props(key))
}
}
package scala.org.scalaTest4
import scala.collection.JavaConversions.propertiesAsScalaMap
/**
* Created by wuyanru on 2017/1/5.
* 映射和元组
*8. 编写一个函数minmax(values: Array[lnt]),返回数组中最小值和最大值的对偶
*/
object test8 extends App{
val array=Array(1,2,3,4,5)
var tuple:(Int,Int)=(array.min,array.max)
println(tuple._1+" "+tuple._2)
}
package scala.org.scalaTest4
/**
* Created by wuyanru on 2017/1/5.
* 映射和元组
*9. 编写一个函数lteqgt(values: Array[lnt],v:Int),
* 返回数组中小于v、等于v和大于V的数量,要求三个值一起返回
*/
object test9 extends App{
val array=Array(1,1,2,2,2,3,3,4,4,5,6,7)
val buf=array.toBuffer
print(array.count(_ < 3))
print(buf.count(_ ==3))
print(buf.count(_ > 3))
}
package scala.org.scalaTest4
/**
* Created by wuyanru on 2017/1/5.
* 映射和元组
*10. 编写一个函数lteqgt(values: Array[lnt],v:Int),
* 返回数组中小于v、等于v和大于V的数量,要求三个值一起返回
*/
object test10 extends App{
val str="hello".zip("words")
str.toMap
str.foreach(println)
}