本章为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))