scala学习笔记-数组、元组

1:数组
1.1:定长数组
  • 定长数组指的是数组的长度不允许改变

  • 数组的元素可以改变

  • 语法

    // 通过指定长度定义数组
    val/var 变量名 = new Array[元素类型](数组长度)
    
    // 用元素直接初始化数组
    val/var 变量名 = Array(元素1, 元素2, 元素3...)
    
  • 注意:在scala中,数组的泛型使用[]来指定,使用()来获取元素

  • 示例:

    scala> val a=new Array[Int](5)
    a: Array[Int] = Array(0, 0, 0, 0, 0)
    
    scala> a(0)
    res19: Int = 0
    
    scala> a(0)=10
    
    scala> a
    res21: Array[Int] = Array(10, 0, 0, 0, 0)
    
    
    scala> val b =Array("hadoop","spark","hive")
    b: Array[String] = Array(hadoop, spark, hive)
    
    scala> b(0)
    res24: String = hadoop
    
    scala> b.length
    res25: Int = 3
    
1.2:变长数组
  • 变长数组指的是数组的长度是可变的,可以往数组中添加、删除元素

  • 创建变长数组,需要提前导入类import scala.collection.mutable._

  • 语法

    • 创建空的ArrayBuffer变长数组:val/var a = ArrayBuffer[元素类型]()
    • 创建带有初始元素的ArrayBuffer:val/var a = ArrayBuffer(元素1,元素2,元素3....)
  • 示例

    扫描二维码关注公众号,回复: 10560251 查看本文章
    //导入ArrayBuffer类型
    scala> import scala.collection.mutable.ArrayBuffer
    import scala.collection.mutable.ArrayBuffer
    
    //定义一个长度为0的整型变长数组
    scala> val a=ArrayBuffer[Int]()
    a: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()
    
    //定义一个有初始元素的变长数组
    scala> val b = ArrayBuffer("hadoop", "storm", "spark")
    b: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(hadoop, storm, spark)
    
  • 变长数组的增删改操作

    • +=添加元素
    • -=删除元素
    • ++=追加一个数组到变长数组
  • 示例

    // 定义变长数组
    scala> val a = ArrayBuffer("hadoop", "spark", "flink")
    a: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(hadoop, spark, flink)
    
    // 追加一个元素
    scala> a += "flume"
    res10: a.type = ArrayBuffer(hadoop, spark, flink, flume)
    
    // 删除一个元素
    scala> a -= "hadoop"
    res11: a.type = ArrayBuffer(spark, flink, flume)
    
    // 追加一个数组
    scala> a ++= Array("hive", "sqoop")
    res12: a.type = ArrayBuffer(spark, flink, flume, hive, sqoop)
    
1.3:遍历数组
  • 使用for表达式 直接遍历数组中的元素

  • 使用 索引 遍历数组中的元素

  • 示例:

    scala> for(i <- a)println(i)
    hadoop
    hive
    flume
    spark
    
    scala> for(i <- 0 to a.length -1 )println(a(i))
    hadoop
    hive
    flume
    spark
    
    scala> for(i <- 0 until a.length) println(a(i))
    hadoop
    hive
    flume
    spark
    
    
    //0 until n ——生成一系列的数字,包含0,不包含n
    //0 to n    ——包含0,也包含n
    
1.4:数组操作
  • scala中的数组封装了丰富的计算操作,将来在对数据处理的时候,不需要我们自己再重新实现。
  • 示例
    scala> val array=Array(1,3,4,2,5)
    array: Array[Int] = Array(1, 3, 4, 2, 5)
    
    //求和
    scala> array.sum
    res10: Int = 15
    
    //求最大值
    scala> array.max
    res11: Int = 5
    
    //求最小值
    scala> array.min
    res12: Int = 1
    
    //升序
    scala> array.sorted
    res13: Array[Int] = Array(1, 2, 3, 4, 5)
    
    //降序    reverse 反转
    scala> array.sorted.reverse
    res14: Array[Int] = Array(5, 4, 3, 2, 1)
    
2:元组
  • 元组可以用来包含一组不同类型的值。例如:姓名,年龄,性别,出生年月。元组的元素是不可变 的
2.1 :语法
  • 使用括号来定义元组:val/var 元组变量名称 = (元素1, 元素2, 元素3....)
  • 使用箭头来定义元素(元组只有两个元素):val/var 元组 = 元素1->元素2
2.2:示例
	// 可以直接使用括号来定义一个元组 
	scala> val a = (1, "张三", 20, "北京市") 
	a: (Int, String, Int, String) = (1,张三,20,北京市)
	
	//使用箭头来定义元素
	scala> val b = 1->2 
	b: (Int, Int) = (1,2)
2.3: 访问元组
  • 示例:(使用 _1、_2、_3… 来访问元组中的元素,_1表示访问第一个元素,依次类推)
	scala> val a = (1, "张三", 20, "北京市")
	a: (Int, String, Int, String) = (1,张三,20,北京市)
	
	//获取元组中的第一个元素
	scala> a._1
	res18: Int = 1
	
	//获取元组中的第二个元素
	scala> a._2
	res19: String = 张三
	
	//获取元组中的第三个元素
	scala> a._3
	res20: Int = 20
	
	//获取元组中的第四个元素
	scala> a._4
	res21: String = 北京市
	
	//不能修改元组中的值
	scala> a._4="上海"
	<console>:12: error: reassignment to val
	       a._4="上海"
	           ^
	```

发布了40 篇原创文章 · 获赞 59 · 访问量 1385

猜你喜欢

转载自blog.csdn.net/qq_26719997/article/details/105255201