`
zhouchaofei2010
  • 浏览: 1085934 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

scala 元组tuple的几个知识点

阅读更多

通过下标_n取数据不多说了,下面是几个比较有意思的知识点 

 

知识点
1、Tuple 和Function 和Producct一样最多只支持22个元素
      比如 (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21) 这样是没问题的
      但是(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,2122) 会编译不通过
 
2、Tuple 不能通过一个泛型参数来指定所有元素的类型,多个元素对应多个参数,试图通过一个类型参数来 限定元组中所有的元素的类型是错误的
       允许这样使用 : var t=Tuple3[Int,Int,Int](1,2,3)  或者var t2= Tuple3(1,2,3) 或者var t3=(1,2,3)
       不可以这样使用:Tuple3[Int](1,2,3)  //试图通过一个类型参数来限定元组中所有的元素的类型是错误的
 
3、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)
1
1
分享到:
评论

相关推荐

    tuplez:Scala元组组成

    Scala和Scala.js中的元组组成。 // tupleN + scalar, scalar + tupleN, tupleN + tupleM, up to Tuple22 " app.tulz " %%% " tuplez-full " % " 0.3.4 " // or // tupleN + scalar, scalar + tupleN, tupleN + ...

    Scala映射和元组.md

    Scala映射和元组.md

    scala语言知识点.xmind

    scala是运行在 JVM 上的多范式编程语言,同时支持面向对象和面向函数编程;早期scala刚出现的时候,并没有怎么引起重视,随着Spark和Kafka这样基于scala的大数据框架的兴起,scala逐步进入大数据开发者的眼帘。scala...

    Scala集合.md

    学习spark之前,大家必须先学会Scala这门语言,他是spark的基础,这里总结了一下Scala集合的相关知识点

    03Scala下划线的使用

    1.方法转换为函数 scala> def m(x:Int,y:Int) = x*y m: (x: Int, y: Int)Int scala> val f = m _ f: (Int, Int) => Int = 2.集合中的每一个元素 ...3.获取元组tuple中的元素 scala> val t = (“hadoo

    scala中的数据结构

    scala的数据结构有:数组Array、元组Tuple、容器Collection、序列Sequence、集合Set、映射Map、迭代器Iterator 2、数组 创建方式 (创建一个长度为10类型为Int的数组 1 val arr = new Array[Int](10) 默认初始化为0 2...

    scala.rar基础知识,笔记很好的详细

    Scala学习资源Scala编程语言抓住了很多开发者的眼球。如果你粗略浏览Scala的网站,你会觉得Scala是一种纯粹的面向对象编程语言,而又无缝地结合了命令式...Scala代表了一个新的语言品种,它抹平了这些人为划分的界限。

    Scala快速从入门到神坑

    5.3 元组(Tuple) 5.4 集(Set) 5.5 映射(Map) 5.6 迭代器(Iterator) 六、类(Class) 6.1 简单的类 6.2 给类增加字段和方法 6.3 创建对象 6.4 编译和执行 6.5 getter 和setter方法 6.6 辅助构造器 6.7 主构造器 七、...

    12元组

    元组是不可变的,最多可以存储22个元组,若多则建议使用集合。 可以使用元组作为返回值带回数据。 2.定义元组 val t = (1,hello,world,true,1.33) //若存储多个值可以使用Tuple1。 val t1 = new Tupel(h,false,2) /...

    scala五本经典资料集合

    scala是一个经典的语言,Scala代表了一个新的语言品种,它抹平了这些人为划分的界限。但是现在scala的相关学习资料不多,因此,本人总结了几篇写的较好的scala学习资料,包含<ScalaQuery_Commerzbank_2011><twitter-...

    Scala实用指南

    本书共分为 4 个部分:第一部分详细介绍 Scala 的一些基础知识,并和 Java 中的相关概 念进行了参照,方便读者快速上手 Scala;第二部分进一步介绍 Scala 的一些中级知识,以及 与 Java 的一些差异点,方便读者编写...

    Spark Scala简单 统计单词个数

    该资源可以简单计算文本中单词个数

    scala知识思维导图

    Scala语言的思维导图,分理论,安装,基础,函数和API五部分,对应语言的掌握足够,另附有代码文件

    Scala函数式编程

    这本书绝不轻易放过每个知识点,全书包含有大量习题,要求你自己实现 Scala 标准库或者 Scalaz 中的既有功能。所以,当你读完本书,做完习题后,虽然你的应用开发能力并不会直接提升,但你会体会到构建函数式语言和...

    scala sdk scala-2.12.3

    scala-2.12.3 scala-2.12.3 scala-2.12.3 scala-2.12.3

    Scala编程实战.zip

    此文档是讲解实战Scala,希望对喜欢大数据的同学有所帮助!!! 学习Scala语言,不仅仅意味着熟悉新的API,更重要的是...对于Scala新手来说这是一本不错的入门书,对于老手来说也是一本夯实基础,检视自己所学知识的好书。

    scala-sbt-scala编译工具

    scala 编译工具 sbt 安装包。 Little or no configuration required for simple projects Scala-based build definition that can use the full flexibility of Scala code Accurate incremental recompilation ...

    SCALA编程思想 原书第2版 PDF 下载

    一个“原子”即为一个小型知识点,通过代码示例引导读者逐步领悟Scala的要义,结合练习鼓励读者在实践中读懂并写出地道的Scala代码。访问可下载练习解答和代码示例,还可了解本书英文版的实时动态。本书无需编程背景...

Global site tag (gtag.js) - Google Analytics