《快学Scala》Chapter 4课后题答案

import java.util /**/
import scala.collection.mutable
import scala.io.Source
import scala.collection.SortedMap
import scala.collection.mutable.LinkedHashMap/**/
import java.util.Calendar
import scala.collection.JavaConverters.mapAsScalaMap/**/
import java.util.TreeMap/**/
import scala.collection.JavaConverters.propertiesAsScalaMap/**/
object ans01 {
  def main(args: Array[String]): Unit = {
    /*p01*/
    val scores = Map("Water" -> 10,"Paper" -> 5,"book" -> 4)
    val scores_1 = for ((s,v) <- scores)yield (s,0.9*v)
    scores_1.foreach(println)
    /*p02*/
    val source = Source.fromFile("G:\\Software\\scala\\src\\main\\scala\\myfile.txt").mkString/*读取文件*/
    val tokens = source.split("\\s+")/*split函数按照\\s+来分割字符串,形成元组中的键*/
    val map = new mutable.HashMap[String,Int]/*定义可变映射*/
    for(key <- tokens){/*更新每个单词的值*/
      map(key) = map.getOrElse(key,0) + 1/*若键A在元组Map中则key+1*/
    }
    println(map.mkString(","))/*输出map中的键值,用,分割*/
    /*p03用不可变元组*/
    /*不可变映射与可变映射的区别就是每次添加新的元素时都会返回一个新的映射*/
    var map_3 = Map[String,Int]()
    for(key <- tokens){
      map_3 += (key -> (map.getOrElse(key,0)+1))
    }
    println(map_3.mkString(","))
    /*p04*/
    var map_4 = SortedMap[String,Int]()
    for(key <- tokens){
      map_4 += (key -> (map_4.getOrElse(key,0)+1))
    }
    println(map_4.mkString(","))
   /*p05*/
   /* val map_5: Map[String,Int] = util.TreeMap[String,Int]
    for(key <- tokens){
      map_5(key) = map_5.getOrElse(key,0)+1
    }
    println(map_5.mkString(","))
    */
   val map_6 = new mutable.LinkedHashMap[String,Int]
    map_6 += ("Monday" -> Calendar.MONDAY)
    map_6 += ("Tuesday" -> Calendar.TUESDAY)
    map_6 += ("Wednesday" -> Calendar.WEDNESDAY)
    map_6 += ("Thursday" -> Calendar.THURSDAY)
    map_6 += ("Friday" -> Calendar.FRIDAY)
    map_6 += ("Saturday" -> Calendar.SATURDAY)
    map_6 += ("Sunday" -> Calendar.SUNDAY)
    println(map_6.mkString(","))
    /*p07*/
    /*p08*/
    def minmax(values:Array[Int])={
      (values.max,values.min)
    }
    /*p09*/
    def Iteqgt(values:Array[Int],v:Int)={
      val buf = (values.count(_<v),values.count(_ == v),values.count( _ > v))
    }
    /*10*/
    "Hello".zip("World")
  }
}

  关于Scala和Java的转换仍然不会。。。

posted @ 2018-01-10 22:43  AryaStark  阅读(186)  评论(0)    收藏  举报