Scala的Tuple

Tuple和List一样,是长度不变,内容也不可变的

Tuple的元素个数不能大于22个,否则编译出错

 通过下标_n取数据,这是和List,Array的不同点

 

Tuple 不像List一样有map、flatMap 等方法直接操作元素,只能通过混入的ProductN(n代表1-22的数字) 的productIterator函数生成一个Iterator来操作数据,并且productIterator的返回类型是Iterator[Any] ,类型参数是Any ,所以操作数据的时候还要进行类型转换。比如_.asInstanceOf[Int] 或者模式匹配

 

例子
例子:val m = Map(2->(3,2) , 1->(2,1,3)) 怎么实现相同key的元素相加,得到 Map(2->5 , 1->6) 的结果? 其中value是个元组,元组中可以有任意多个(1-22个)Int类型的数字
 
解决方案: val m2=m.mapValues(_.productIterator.map(_.asInstanceOf[Int]).sum) 
 
object mapplus2 extends App {
  val m = Map(2->(3,2) , 1->(2,1,3))
  val m2=m.mapValues(_.productIterator.map(_.asInstanceOf[Int]).sum)
  println(m2)
}
运行结果:Map(2 -> 5, 1 -> 6)

posted on 2016-08-05 11:27  杰克再造  阅读(498)  评论(0编辑  收藏  举报

导航