前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >scala(十七) 元组(tuple)

scala(十七) 元组(tuple)

作者头像
用户1483438
发布2022-04-20 15:19:22
发布2022-04-20 15:19:22
31700
代码可运行
举报
文章被收录于专栏:大数据共享大数据共享
运行总次数:0
代码可运行

元组的创建方式:

  1. 通用方式: (初始元素,初始元素,...)
代码语言:javascript
代码运行次数:0
复制
val student=("张三",'男',18,"北京师范大学")
(张三,男,18,北京师范大学)
  1. 二元元组: K -> V
代码语言:javascript
代码运行次数:0
复制
val student1="张三"->'男'
(张三,男)
  1. scala中二元元组表示KV键值对 这种方式会将每个(->)当成一个元组,所以称为二元元组,只能有两个元素
代码语言:javascript
代码运行次数:0
复制
val student2="张三"->'男'->18->"北京师范大学"
(((张三,男),18),北京师范大学)
  1. 元组中最多可以存放22个元素

从 Tuple1 到 Tuple22

 Tuple
Tuple
  1. 元组支持的api
代码语言:javascript
代码运行次数:0
复制
scala> student.
_1   _3   canEqual   equals     productArity     productIterator   toString
_2   _4   copy       hashCode   productElement   productPrefix

canEqualequals:比较两个元组值是否相等

代码语言:javascript
代码运行次数:0
复制
val student=("张三",'男',18,"北京师范大学")
val student1=("张三",'男',18,"北京师范大学")

println(student.equals(student1)) // true
println(student.canEqual(student1)) // true

productArity:获取当前元组元素个数

代码语言:javascript
代码运行次数:0
复制
val student=("张三",'男',18,"北京师范大学")

val arity: Int = student.productArity
println(arity) // 4

productIterator:元素遍历

代码语言:javascript
代码运行次数:0
复制
val student=("张三",'男',18,"北京师范大学")

val iterator: Iterator[Any] = student.productIterator
while (iterator.hasNext) {
      println(iterator.next())
}

toString:转换成字符串格式输出

代码语言:javascript
代码运行次数:0
复制
val student=("张三",'男',18,"北京师范大学")

println(student.toString())
(张三,男,18,北京师范大学)

copy:拷贝元组

代码语言:javascript
代码运行次数:0
复制
 val student=("张三",'男',18,"北京师范大学")

val student1=student.copy()
println(student1)
(张三,男,18,北京师范大学)

hashCode:获取 hashcode

代码语言:javascript
代码运行次数:0
复制
val student=("张三",'男',18,"北京师范大学")

 println(student.hashCode())

productElement:索引取值(从0开始)

代码语言:javascript
代码运行次数:0
复制
val student=("张三",'男',18,"北京师范大学")

val value: Any = student.productElement(1)
println(value) // 男

productPrefix: 返回当前元组维度名称

代码语言:javascript
代码运行次数:0
复制
val student=("张三",'男',18,"北京师范大学")

val prefix: String = student1.productPrefix

println(prefix) // Tuple4

似乎还有swap函数用于元组元素交换;但是在我这个版本(2.12.10)没有看到。

  1. 元组一旦定义元素与个数都不可以改变 无法演示
  2. 元组获取元素: 元组名._角标 【元组的角标从1开始】 从 val student=("张三",'男',18,"北京师范大学") 可以看到它有一些特殊的函数_N,用于回去对应角标的元素
代码语言:javascript
代码运行次数:0
复制
_1   _3 
_2   _4

获取姓名和学校

代码语言:javascript
代码运行次数:0
复制
val student=("张三",'男',18,"北京师范大学")
println(s"姓名:${student._1},学校:${student._4}")
姓名:张三,学校:北京师范大学

元组角标是根据元组的维度生成的;比如五维元组,那么就有五个角标

代码语言:javascript
代码运行次数:0
复制
scala> val student=("张三",'男',18,"北京师范大学","齐齐哈尔市")

scala> student.
_1   _3   _5         copy     hashCode       productElement    productPrefix
_2   _4   canEqual   equals   productArity   productIterator   toString

元组角标最多只能有22个,这个要注意。

最后

  1. 在实际工作中,元组比较常用,通过元组封装数据比较简单。
  2. 虽然元组只支持22个维度的元组,但是可以将元组的元素定义成元组。称为嵌套元组

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 元组的创建方式:
  • 最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档