第四章:マッピングとメタグループ

3456 ワード

第四章:マッピングとメタグループ
ラベル(スペース区切り):scalaレッスン後の練習問題
1.必要な装備と価格を含むマッピングを設定します.次に別のマッピングを構築し、同じキーセットを採用しますが、価格は9割引になります.
def    percentMap(map : Map[String,Float])={
    for((name,price) <- map) yield (name,price*0.9)
}

2.ファイルから単語を読み込むプログラムを作成します.各単語の出現頻度を可変マッピングでクリアします.これらの単語を読み取る操作はjavaを用いることができる.util.Scanner.最後に、すべての単語とその出現回数を印刷します.
    def wordCount(file:String)={
        val words = Source.fromFile(file).mkString
        val wordArray = words.split(" ")
        val map = new HashMap[String,Int]
        for(word <- wordArray){
            map(word)=map.getOrElse(word,0)+1
        }
    }

3.前の練習を繰り返し、今回は不変のマッピングで
    def wordCount2(file :String)={
        val source = Source.fromFile("myfile.txt").mkString
        val tokens = source.split(" ")
        var map = Map[String,Int]()
        for(key <- tokens){
            map += (key -> (map.getOrElse(key,0) + 1))
        }   
    }

4.チェーンハッシュマッピングを定義し、「Monday」をjavaにマッピングする.util.Calendar.MONDAYは、順番に別の日付に追加します.ディスプレイ要素は、挿入された順序でアクセスされます.
この問題は主にLinkedHashMapを試験することです.
val map = new LinkedHashMap[String,Int]
map += ("Monday"->Calendar.MONDAY)
map += ("Tuesday"->Calendar.TUESDAY)
map += ("Wednesday"->Calendar.WEDNESDAY)
map += ("Thursday"->Calendar.THURSDAY)
map += ("Friday"->Calendar.FRIDAY)
map += ("Saturday"->Calendar.SATURDAY)
map += ("Sunday"->Calendar.SUNDAY)

5.関数minmax(values:Array[Int])を作成し、配列内の最小値と最大値の対偶を返します.
def minmax(values:Array[Int])={
  (values.max,values.min)
}

6.関数Iteqgt(values:Array[int],v:Int)を作成し、戻り配列の中でvより小さく、vとvより大きい数に等しく、3つの値を一緒に返す必要がある.
def iteqgt(values:Array[Int],v:Int)={
  val buf = values.toBuffer
  (values.count(_ < v),values.count(_ == v),values.count(_ > v))
}

7.2つの文字列を一緒にファスナーすると、例えば「Hello」です.zip(「World」)は、どんな結果になりますか?話の通じる用例を思いつく
scala> "Hello".zip("World")
res0: scala.collection.immutable.IndexedSeq[(Char, Char)] = Vector((H,W), (e,o), (l,r), (l,l), (o,d))  

これは主にStringOpsのzipメソッド定義を見に行きます.