package com.learn.scala/** * scala第八天 * Created by zhuqing on 2017/2/27. */object Day8MapAndTuple { def main(args: Array[String]): Unit = { val map = 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类型的集合。 */ val tuple = ("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) /** * 拉链操作,将两个数组合并成一个对偶数组 */ val names = Array("Robbie", "Tom", "Lizzy") val ages = Array(22, 23, 21) val newTupes = names.zip(ages) for ((name, age) <- newTupes) { println(name + "=>" + age) } } /** * 生成姓名和年龄的元组 * * @return */ def getNameAndAge(): (String, Int) = { ("Tom", 23) }}