大数据——Scala 集合

Scala

集合

概述

  1. 集合本质上就是一个用于存储1个到多个数据的容器。在Scala中,集合可以分为三大类:Seq(序列),Set(集合)和Map(映射)。基于这三大类,衍生出来众多的子类
    1. 序列:元素有序可重复
    2. 集合:元素无序不可重复
    3. 映射:键值对结构数据
  2. 在Scala中,所有的集合都混入了Iterable特质,意味着所有的集合都可以被迭代遍历
  3. Scala中的集合分为可变集合(scala.collection.mutable)和不可变集合(scala.collection.immutable)
    1. 所谓的不可变集合,指的是集合被创建好之后,长度不可变,且其中的元素也不能改变。如果对不可变集合中的元素进行增删操作,那么不会改变原集合,而是会产生一个新的集合
    2. 所谓的可变集合,指的是集合创建好之后,依然可以对元素进行增删操作,并且不会产生新集合,而是修改原集合

数组

不可变数组(Array)
  1. 不可变数组定义好之后,长度不能发生变化,元素也不能增删;如果增删元素,那么会产生一个新的数组

  2. 定义方式

    package com.fe.array
    
    object ArrayDemo {
         
         
    
      def main(args: Array[String]): Unit = {
         
         
    
        // 不可变数组定义方式
    
        // 方式一:val 数组名:Array[元素类型] = new Array[元素类型](数组长度)
        // 数组定义好之后,每一个位置都会有默认值
        val arr: Array[Int] = new Array[Int](5)
        arr(0) = 3
        // 将数组转化为字符串
        println(arr.mkString(","))
    
        // 方式二:
        // int[] arr = new int[]{3,4,1,4,5}
        val arr2: Array[Int] = Array(3, 1, 7, 8, 4)
        println(arr2.mkString(","))
    
      }
    
    }
    
  3. 应用一

    package com.fe.array
    
    object ArrayDemo2 {
         
         
    
      def main(args: Array[String]): Unit = {
         
         
    
        // 不可变数组定义好之后长度不可变
        val arr = Array(2, 4, 8, 7, 1, 5, 6)
    
        // 应用一:修改数组中元素的值
        // 方式一:数组名(下标) = 数据
        arr(3) = 4
        // 方式二:提供了update方法来修改元素数据
        arr.update(2, 5)
    
        // 应用二:遍历数组
        // 方式一:转化为字符串
        val str = arr.mkString(", ")
        println(str)
        // 方式二:通过下标来遍历
        for (i <- 0 until arr.length) println(arr(i))
        // 方式三:增强for循环
        // 增强for循环本质上就是在对元素进行迭代遍历
        for (i <- arr) println(i)
        // 方式四:迭代遍历
        val it = arr.iterator
        while (it.hasNext) println(it.next())
        // 方式五:foreach方法
        arr.foreach(x => println(x))
        // 顺次使用参数,并且参数只使用了一次
        arr.foreach(println(_))
        // println(3,5, (x, y) => x+ y)
        // println(3,5, _ + _ )
        // 函数体只有一句,并且使用了已经存在函数,且参数是一一对应,那么此时参数列表可以省略
        arr.foreach(println)
    
    
      }
    
    }
    
  4. 应用二

    package com.fe.array
    
    object ArrayDemo3 {
         
         
    
      def main(args: Array[String]): Unit = {
         
         
    
        val arr = Array(2, 4, 8, 7, 1, 5, 6)
    
        // 应用三:数组扩容
        // Array类中提供了+:和:+的方式来对数组进行扩容,本质上都是产生一个新的数组
        // :+  在数组的末尾来新添元素,构成一个新的数组
        val r1 = arr :+ 3
        println(r1.mkString(", "))
        // +: 在数组的头部来新添元素,构成一个新的数组
        val r2 = arr.+:(3)
        println(r2.mkString(", "))
        val r3 = 3 +: arr
        println(r3.mkString(", "))
        val r4 = 4 +: arr :+ 3
        println(r4.mkString(", "))
    
        // 应用四:数组合并
        val nums1 = Array(1, 2, 3, 4, 5)
        val nums2 = Array(6, 7, 8, 9)
        // 方式一:通过++合并
        val v1 = nums1 ++ nums2
        println(v1.mkString(", "))
        // 方式二: ++: 或者 :++
        // ++:等价于++
        val v2 = nums1 ++
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZikH~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值