元组的创建方式:
- 通用方式: (初始元素,初始元素,...)
val student=("张三",'男',18,"北京师范大学")
(张三,男,18,北京师范大学)
- 二元元组: K -> V
val student1="张三"->'男'
(张三,男)
- scala中二元元组表示KV键值对
这种方式会将每个(->
)当成一个元组,所以称为二元元组,只能有两个元素
val student2="张三"->'男'->18->"北京师范大学"
(((张三,男),18),北京师范大学)
- 元组中最多可以存放22个元素
从 Tuple1 到 Tuple22
Tuple
- 元组支持的api
scala> student.
_1 _3 canEqual equals productArity productIterator toString
_2 _4 copy hashCode productElement productPrefix
canEqual
,equals
:比较两个元组值是否相等
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开始】
从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个,这个要注意。
最后
- 在实际工作中,元组比较常用,通过元组封装数据比较简单。
- 虽然元组只支持22个维度的元组,但是可以将元组的元素定义成元组。称为
嵌套元组
网友评论