packagecom.learn.scala
/**
* scala第八天
* Created by zhuqing on 2017/2/27.
*/
objectDay8MapAndTuple {
defmain(args: Array[String]): Unit = {
valmap =Map("Robbie"->100,"Lizzy"->89,"Tom"->90);
for((k, v) <- map) {
println("k="+ k,"v="+ v)
}
//scala中对Map的key,value值的遍历与Java类似
for(k <- map.keySet) {
println("k="+ k +"=>"+ map.get(k).get)
}
for(v <- map.values) {
println("v="+ v)
}
/**
* 元组:不同类型值的聚集就是元组,Map的键值对就是最简单的元组,如上面的(String,Int).
* 这个是Java中没有的概念,如果真要用Java实现元组的功能,可以用Object类型的集合。
*/
valtuple = ("Robbie","Math",83)
//tuple取值时可以按照顺序号取
println(tuple._1 +":"+ tuple._2 +":"+ tuple._3)
//也可以使用模式匹配的方式获取
val(name, classname, score) = tuple;
println(name +":"+ classname +":"+ score)
//如果不是每个属性都需要可以使用下划线_为不使用的属性命名
val(enName, _, enScore) = tuple
println(enName +"=>"+ enScore)
//元组可以用在函数返回多种返回值时,这种情况Java不好处理
val(secondName, age) =this.getNameAndAge();
println("scondName="+ secondName +", age="+ age)
/**
* 拉链操作,将两个数组合并成一个对偶数组
*/
valnames =Array("Robbie","Tom","Lizzy")
valages =Array(22,23,21)
valnewTupes = names.zip(ages)
for((name, age) <- newTupes) {
println(name +"=>"+ age)
}
}
/**
* 生成姓名和年龄的元组
*
*@return
*/
defgetNameAndAge(): (String, Int) = {
("Tom",23)
}
}