• spark学习进度4——Scala中的元组


    一、Scala中的集合

    1、按照常用性进行排序:

    • 1-元组

    • 2-数组(Array,在scala中Array是单独存在的,直接声明Array[type])

    • 3-List

    • 4-Map

    • 5-Set (去重)

    2、以上的集合数据都分为两种(除了元组): 

    •  mutable 可变集合——集合声明以后,元素个数和值等可以改变(需要导包)

    •  immutable不可变集合——集合声明以后,元素个数和值等不能改变

     在scala.collection.mutable/immutable 包中


    二、元组

     1、基本概念

    (1)(  ) 声明元组。 元组没有可变的,都是不可变的,声明以后只能使用,不能修改(tuple)。

    (2)元组对象的关键字: tuple。  Tuple是一个类,是一个关键字。

    (3) 概念:一系列数据的集合,可以理解成array,但是比较特殊,可以将不同的类型的数据绑定在一起,同时也可以理解成对象。

    (4)元组是一个类,对参数的个数要求是: 1 - 22 个,不能不给参数。

    (5) 使用场景: 方法的返回值是不同数据类型的时候可以绑定在元组中。

    2、声明方式——使用小括号进行声明(元组数据1,元组数据2...)

    (1)存放相同数据类型

    val tuple01:(Int,Int,Int)=(1,2,3)

    (2)存放不同数据类型

    val tuple02:(String,Int,Int)=("zhangsan",20,3000)

    (3)使用new进行创建,但是必须给参数,参数个数是1—22个

    val tuple03:(String,Int,Int)=new Tuple3("zhangsan",20,3000)

    (4)元组中嵌套元素

    val tuple04=(tuple01,tuple01,tuple01)

    3、元组取值

    (1)通过元组中参数的位置或者下标(index不能越界)进行取值

    1   def main(args: Array[String]): Unit = {
    2     val tuple02:(String,Int,Int)=("zhangsan",20,3000)
    3     //通过元素位置进行取值,获取zhangsan
    4     println(tuple02._1)
    5     //或者
    6     println(tuple02 _1)
    7   }

     (2)如果元组中嵌套元组的取值

    1   def main(args: Array[String]): Unit = {
    2     val t1:(String,Int,Int)=("zhangsan",20,3000)
    3     val t2=(t1,t1,t1)
    4     println(t2._1._1)
    5   }

     4、元组遍历

    (1)productIterator

    1 def main(args: Array[String]): Unit = {
    2     val t1=Tuple3("zhangsan",20,3000)
    3     for(a<-t1.productIterator){
    4       println(a)
    5     }
    6 }

    (2) productArity + productElement 

    1   def main(args: Array[String]): Unit = {
    2     val t1=Tuple3("zhangsan",20,3000)
    3     for(b<-0 to t1.productArity-1){
    4       var value=t1.productElement(b)
    5       println(s"第${b+1}的元素的值是${value}")
    6     }
    7   }

     5、对偶元组——Tuple2就是对偶元组

    (1)两个参数的元组称为对偶元组

    (2)对偶元组是map集合中的元素,所以比较特殊

    6、操作方法

    (1)swap 方法: 将对偶元组中的数据位置互换;

    1 def main(args: Array[String]): Unit = {
    2     val t1=("1001","zhangsan")
    3     val t2=t1.swap
    4     println(t2)
    5   }

    (2)zip方法:拉链方法,可以将两个数组进行拉链操作变成对偶元组:

    1 def main(args: Array[String]): Unit = {
    2     var arr1:Array[Int]=Array(1,2,3,4,5)
    3     var arr2: Array[String] =Array("zhangsan","lisi","wangwu")
    4     val tuple: Array[(Int, String)] =arr1.zip(arr2)
    5     //打印完成以后发现都是对偶元组
    6     tuple.foreach(println)
    7     //获取下标为0的数组中的第二个元素:zhangsan
    8     println(tuple(0)._2)
    9   }

    注:元素个数不匹配的,超出的拉不上

    (3)zipWithIndex 给数组中的元素添加下标,变成对偶元组:

    1   def main(args: Array[String]): Unit = {
    2     var arr1: Array[String] =Array("zhangsan","lisi","wangwu")
    3     val tuple: Array[(String,Int)] =arr1.zipWithIndex
    4     //将下标+1输出
    5     val tuples = tuple.map(a => (a._1, a._2 + 1))
    6     for (elem <- tuples) {
    7       println(elem.swap)
    8     }
    9   }

  • 相关阅读:
    电子设计技术支持网站
    用nero刻录系统碟,数据碟
    winsock编程学习1
    java学习开发环境的构建
    第五次作业 计科
    第四次作业 计科
    第三次作业 计科
    第一次作业 计科
    第二次作业 计科
    maven中的三种工程,以及在idea中构建父子工程。
  • 原文地址:https://www.cnblogs.com/znjy/p/15760420.html
Copyright © 2020-2023  润新知