快学scala习题(四)

本章为Map的使用

1.设置一个映射,在根据之前的映射来生成第二个映射

val itemprice=Map("Exlier" -> 150,"Potion" -> 50,"Phoneix" ->200);
      val itemprice1=new scala.collection.mutable.HashMap[String,Double];
      for ((k,v)<- itemprice){
        itemprice1+=(k -> v*0.9);
      }

2.读取文件,并计数,因为+号会覆盖,所以需要判断是否存在key

 def readfile(fileName:String){
       var in=new java.util.Scanner(new java.io.File(fileName));
       val halscore = new scala.collection.mutable.HashMap[String,Int];
       var count=1;
       while(in.hasNext()){
          halscore=(in->next() -> (halscore.getorElse(in.next(),0)+1);

       }
       halscore.foreach(println)

    }

3.同2,采用不可变映射

不可变映射申请方式
 var in=new java.util.Scanner(new java.io.File(fileName));
       //val halscore = new scala.collection.mutable.HashMap[String,Int];
       var halscore= Map[String,Int]() ;
       var count=1;
       while(in.hasNext()){
          val arg=in.next();
          halscore = halscore + (arg -> (halscore.getOrElse(arg,0) + 1))


       }
       halscore.foreach(println)

4.记住包含import scala.collection.immutable.SortedMap

def readfile(fileName:String){
       var in=new java.util.Scanner(new java.io.File(fileName));
       //val halscore = new scala.collection.mutable.HashMap[String,Int];
       var halscore= SortedMap[String,Int]();
       var count=1;
       while(in.hasNext()){
          val arg=in.next();
          halscore = halscore + (arg -> (halscore.getOrElse(arg,0) + 1))


       }
       halscore.foreach(println)

    }

5.记住包含转换包import scala.collection.JavaConversions.mapAsScalaMap;

   var in=new java.util.Scanner(new java.io.File(fileName));
       //val halscore = new scala.collection.mutable.HashMap[String,Int];
       val map:Map[String,Int] = new TreeMap[String,Int]
       var count=1;
       while(in.hasNext()){
          val arg=in.next();
          map(arg)=map.getOrElse(arg, 0)+1;


       }
       map.foreach(println)

6.

val keys=Array(MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY);
      val values=Array("MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY");
      val map=keys.zip(values);
      var Tmap=map.toMap[Int,String];
      Tmap.foreach(println);`

7.打印出所有java的系统属性

获取属性的方法
import scala.collection.JavaConversions.propertiesAsScalaMap;
val props:Map[String,String]=System.getProperties();
找出最长键的长度,并进行打印
   var maxlen=0;
      for((k,v) <- props) {
        if(k.length()>maxlen){
          maxlen=k.length();
        }
      }
      for((k,v)<- props){
         println(k+" "*(maxlen-k.length())+"|"+v);
      }

8.找出数组中的最大值和最小值,并以元组返回

def findmaxminValue(arr:Array[Int]):Tuple2[Int,Int] ={
      var Max=arr(1);var min=arr(1);
      for(i<- 0 until arr.length){
        if(Max<arr(i)){
          Max=arr(i);
        }
        if(min>arr(i)){
          min=arr(i);
        }
      }
      (Max,min);
    }

9.找出数组中小于输入值的个数,大于的个数,等于的个数,并且要同时返回,因为是第四章,可以基于元组来返回

 def findvalue(arr:Array[Int],v:Int):Tuple3[Int,Int,Int] ={
          var sumBig=0;var sumSmall=0;var sumEquel=0;
          arr.foreach((i:Int) => if(i>v) sumBig=sumBig+1 else if(i<v) sumSmall=sumSmall+1 else sumEquel=sumEquel+1 );
          (sumBig,sumSmall,sumEquel);
    }

10.将字符串拉链起来,可以从下面的结果看出,将字符串拆开后并加入到Vector中

"Hello".zip("World");

 res0: scala.collection.immutable.IndexedSeq[(Char, Char)] = Vector((H,W), (e,o), (l,r), (l,l), (o,d))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值