通过下标_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)
相关推荐
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是运行在 JVM 上的多范式编程语言,同时支持面向对象和面向函数编程;早期scala刚出现的时候,并没有怎么引起重视,随着Spark和Kafka这样基于scala的大数据框架的兴起,scala逐步进入大数据开发者的眼帘。scala...
学习spark之前,大家必须先学会Scala这门语言,他是spark的基础,这里总结了一下Scala集合的相关知识点
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的数据结构有:数组Array、元组Tuple、容器Collection、序列Sequence、集合Set、映射Map、迭代器Iterator 2、数组 创建方式 (创建一个长度为10类型为Int的数组 1 val arr = new Array[Int](10) 默认初始化为0 2...
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 主构造器 七、...
元组是不可变的,最多可以存储22个元组,若多则建议使用集合。 可以使用元组作为返回值带回数据。 2.定义元组 val t = (1,hello,world,true,1.33) //若存储多个值可以使用Tuple1。 val t1 = new Tupel(h,false,2) /...
scala是一个经典的语言,Scala代表了一个新的语言品种,它抹平了这些人为划分的界限。但是现在scala的相关学习资料不多,因此,本人总结了几篇写的较好的scala学习资料,包含<ScalaQuery_Commerzbank_2011><twitter-...
本书共分为 4 个部分:第一部分详细介绍 Scala 的一些基础知识,并和 Java 中的相关概 念进行了参照,方便读者快速上手 Scala;第二部分进一步介绍 Scala 的一些中级知识,以及 与 Java 的一些差异点,方便读者编写...
该资源可以简单计算文本中单词个数
Scala语言的思维导图,分理论,安装,基础,函数和API五部分,对应语言的掌握足够,另附有代码文件
这本书绝不轻易放过每个知识点,全书包含有大量习题,要求你自己实现 Scala 标准库或者 Scalaz 中的既有功能。所以,当你读完本书,做完习题后,虽然你的应用开发能力并不会直接提升,但你会体会到构建函数式语言和...
scala-2.12.3 scala-2.12.3 scala-2.12.3 scala-2.12.3
此文档是讲解实战Scala,希望对喜欢大数据的同学有所帮助!!! 学习Scala语言,不仅仅意味着熟悉新的API,更重要的是...对于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的要义,结合练习鼓励读者在实践中读懂并写出地道的Scala代码。访问可下载练习解答和代码示例,还可了解本书英文版的实时动态。本书无需编程背景...