美文网首页
scala(十七) 元组(tuple)

scala(十七) 元组(tuple)

作者: 万事万物 | 来源:发表于2021-07-04 08:08 被阅读0次

元组的创建方式:

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

从 Tuple1 到 Tuple22


Tuple
  1. 元组支持的api
scala> student.
_1   _3   canEqual   equals     productArity     productIterator   toString
_2   _4   copy       hashCode   productElement   productPrefix

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

val student=("张三",'男',18,"北京师范大学")
val student1=("张三",'男',18,"北京师范大学")

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

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

val student=("张三",'男',18,"北京师范大学")

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

productIterator:元素遍历

val student=("张三",'男',18,"北京师范大学")

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

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

val student=("张三",'男',18,"北京师范大学")

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

copy:拷贝元组

 val student=("张三",'男',18,"北京师范大学")

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

hashCode:获取 hashcode

val student=("张三",'男',18,"北京师范大学")

 println(student.hashCode())

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

val student=("张三",'男',18,"北京师范大学")

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

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

val student=("张三",'男',18,"北京师范大学")

val prefix: String = student1.productPrefix

println(prefix) // Tuple4

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

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

获取姓名和学校

val student=("张三",'男',18,"北京师范大学")
println(s"姓名:${student._1},学校:${student._4}")
姓名:张三,学校:北京师范大学

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

scala> val student=("张三",'男',18,"北京师范大学","齐齐哈尔市")

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

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


最后

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

相关文章

网友评论

      本文标题:scala(十七) 元组(tuple)

      本文链接:https://www.haomeiwen.com/subject/wfwayltx.html