# scala3-tuple-basic **Repository Path**: qiudaozhang/scala3-tuple-basic ## Basic Information - **Project Name**: scala3-tuple-basic - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-09-23 - **Last Updated**: 2021-09-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 元组概念 Java里面没有这个概念,类似python这样的语法内置了元组,所谓元组就是一种可以包含不同数据类型的数据集 比如我们同时描述一个人的年龄,狗的名称,和你喜欢的球员,并且我们只是简单的使用,并不会大面积的复用,这个时候你怎么做 - 构建多个变量 - 构建一个Java类模型承载数据 - 元组 # 创建元组 比如我们创建三个元素的元组 ```scala val tp = new Tuple3(18,"小黄","wade") ``` 数字3代表几个元素,这种写法稍显啰嗦,scala提供了更简单的方式,前面的new以及Tuple都省略 ```scala val tp = (18,"小黄","wade") ``` 但其背后还是利用Tuple3完成的 # 访问元组元素 有两种风格可以访问 ```scala // s1 tp(index) // s2 tp._number ``` s1从0开始,s2从1开始 ```scala val tp = (18,"小黄","wade") println(tp(0)) println(tp(1)) println(tp(2)) println("=================") println(tp._1) println(tp._2) println(tp._3) ``` 大部分情况下我们使用s2的风格,如果发现s2不方便使用,你再用s1的风格即可 # 元组遍历 ```scala val tp = (18,"小黄","wade") tp.productIterator.foreach(println(_)) ``` 通过调用productIterator方法,可以获得可遍历的方式 或者 ```scala for (e <- tp.productIterator) { println(e) } ``` # 特殊的元组,2元组:对 如果元组是两个元素,也可以称之为pair,它有一个特有的方法swap,交换数据 ```scala val tp = ("CN","中国") val swapTp = tp.swap println(swapTp) // (中国,CN) ``` 这个一般在针对两列数据特殊处理的时候有作用。 # 修改元组指定数据 一般情况下,如果你要修改数据,通过copy得到一个新的tuple即可 ```scala val tp = (18, "小黄", "wade") val tp2 = tp.copy(_1 = 22)// 仅仅修改第一个元素 println(tp2) ``` 如果你不想有一个新的变量名,则可以改写 ```scala var tp = (18, "小黄", "wade") tp = tp.copy(_1 = 22)// 仅仅修改第一个元素 println(tp) ``` 你不能像下面这样书写 ```scala tp._1 = 22 ```