scala练习4

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)

}



你可能感兴趣的:(Scala学习)