Scala数组Array/ArrayBuffer和集合Set

本文详细介绍了Scala中的数组和集合。数组分为定长数组和变长数组,前者长度固定,后者支持增删改。变长数组可以通过`ArrayBuffer`进行操作。集合包括不可变集合和可变集合,不可变集合元素唯一且不可变,可变集合则允许元素和长度变化。文章还展示了如何进行数组的常见算法,如求和、求最大值等,并演示了集合的常见操作,如添加、删除元素。
摘要由CSDN通过智能技术生成

数组

概述

数组就是用来存储多个同类型元素的容器, 每个元素都有编号(也叫: 下标, 脚标, 索引), 且编号都是从0开始数的.

分类

定长数组

  1. 特点
  • 数组的长度不允许改变
  • 数组
  1. 语法
    格式一:通过制定长度定义数组
val/var 变量名 = new Array[元素类型](数组长度)

格式二:通过添加数组元素定义数据

val/var 变量名 = Array(元素1,元素2,元素3...)

注:

在scala中,数组的泛型使用[]来指定
使用数组名(索引值)来获取数组中的元素
数组元素是有默认值的,Int:0,Double:0.0,String:null
通过数组名.length或者数组名.size来获取数组的长度

  1. 示例代码
object 不可变数组 {
  def main(args: Array[String]): Unit = {
    //1.格式一:
    //1.1定义一个长度为5的整型数组ints
    val ints = new Array[Int](5)
    //1.2赋值
    ints(0)=1
    ints(1)=2
    ints(2)=3
    ints(3)=4
    ints(4)=5

    //1.3获取ints长度
    println(ints.length)
    //或
    println(ints.size)

    //1.4获取索引为0的元素
    println(ints(0))

    //1.5遍历数组
    for (elem <- ints) {
      println(elem)
    }

    //2.格式2:
    //2.1定义一个包含java,scala的数组
    val array = Array("java","scala");
    //2.2打印数组长度
    println(array.length)
  }
}

变长数组

  1. 特点

数组的长度和内容都是可变的,可以往数组中添加、删除元素.

  1. 语法
  • 创建变长数组,需要先导入ArrayBuffer类
import scala.collection.mutable.ArrayBuffer
  • 定义格式一: 创建空的ArrayBuffer变长数组
val/var 变量名 = ArrayBuffer[元素类型]()
  • 定义格式二: 创建带有初始元素的ArrayBuffer变长数组
val/var 变量名 = ArrayBuffer(元素1,元素2,元素3....)
  1. 示例代码
import scala.collection.mutable.ArrayBuffer
object 可变数组 {
  def main(args: Array[String]): Unit = {
    //1.格式一
    //1.1创建一个空的变长数组
    val arr1= new ArrayBuffer[Int]()
    //1.2插入数据,第一个参数为索引,第二个为值
    arr1.insert(0,1)
    arr1.insert(1,2)
    arr1.insert(2,3)
    //1.3打印
    println(s"arr1:${arr1}")

    //2.格式二
    //2.1定义一个包含"hadoop", "storm", "spark"这三个元素的变长数组
    val arr2 = ArrayBuffer("hadoop", "storm", "spark")
    //2.2打印
    println(s"arr2:${arr2}")
  }
}

增删改可变数组

针对Scala中的变长数组, 可通过下述方式来修改数组中的内容:
使用 += 添加单个元素
使用 -= 删除单个元素
使用 ++= 追加一个数组到变长数组中
使用 --= 移除变长数组中的指定多个元素

示例
1. 定义一个变长数组,包含以下元素: "hadoop", "spark", "flink"
2. 往该变长数组中添加一个"flume"元素
3. 从该变长数组中删除"hadoop"元素
4. 将一个包含"hive", "sqoop"元素的数组, 追加到变长数组中. 
5. 从该变长数组中删除"sqoop", "spark"这两个元素. 
6. 打印数组, 查看结果.

参考代码:
//导包 import scala.collection.mutable.ArrayBuffer 
//案例: 修改变长数组中的内容. 
import scala.collection.mutable.ArrayBuffer
object 增删改可变数组 {
  def main(args: Array[String]): Unit = {
    //1. 定义一个变长数组,包含以下元素: "hadoop", "spark", "flink"
    val arr1 = ArrayBuffer("hadoop", "spark", "flink")
    //2. 往该变长数组中添加一个"flume"元素
    arr1 += "flume"
    //3. 从该变长数组中删除"hadoop"元素
    arr1 -= "hadoop"
    //4. 将一个包含"hive", "sqoop"元素的数组, 追加到变长数组中.
    arr1 ++= Array("hive", "sqoop")
    //5. 从该变长数组中删除"sqoop", "spark"这两个元素.
    arr1 --= Array("sqoop", "spark")
    //6. 打印数组, 查看结果.
    println(arr1)
  }
}

数组常用算法

sum()方法: 求和
max()方法: 求最大值
min()方法: 求最小值
sorted()方法: 排序, 返回一个新的数组.
reverse()方法: 反转, 返回一个新的数组.

集合

概述

Set:代表没有重复元素的集合
特点

  • 唯一:集合中的元素唯一,不会重复第二次
  • 无序:Set集合中的元素,添加顺序和取出顺序不一致

分类

不可变集合

概述
不可变集指的是元素, 集的长度都不可变的集合

语法

格式一: 创建一个空的不可变集
val/var 变量名 = Set[类型]()

格式二: 给定元素来创建一个不可变集
val/var 变量名 = Set(元素1, 元素2, 元素3...)

示例代码

object 不可变集合 {
  def main(args: Array[String]): Unit = {
    //1. 定义一个空的整型不可变集.
    val set1 = Set[Int]()
    //2. 定义一个不可变集,保存以下元素:1,1,3,2,4,8.
    val set2 = Set[Int](1,1,3,2,4,8)
    //打印结果.
    println(s"set1:${set1}")
    println(s"set2:${set2}")
  }
}

不可变集的常见操作
格式

  1. 获取集的大小( size )
  2. 遍历集( 和遍历数组一致 )
  3. 添加一个元素,生成一个新的Set( + )
  4. 拼接两个集,生成一个新的Set( ++ )
  5. 拼接集和列表,生成一个新的Set( ++ )
object 不可变集的常见操作 {
  def main(args: Array[String]): Unit = {
    //1. 创建一个集,包含以下元素:1,1,2,3,4,5
    val set1 = Set[Int](1, 1, 2, 3, 4, 5)
    //2. 获取集的大小, 并打印结果.
    println(set1.size)
    //3. 遍历集,打印每个元素.
    for (elem <- set1) {
      print(elem+" ")
    }
    println()
    //4. 删除元素1,生成新的集, 并打印.
    val set2 = set1 - 1
    println(s"set2:${set2}")
    //5. 拼接另一个集Set(6, 7, 8), 生成新的集, 并打印.
    val set3 = set1 ++ Set(6, 7, 8)
    println(s"set3:${set3}")
    //6. 拼接一个列表List(6,7,8, 9), 生成新的集, 并打印.
    val list = List(6, 7, 8, 9)
    val set4 = set1 ++ list
    println(s"set4:${set4}")
  }
}

可变集合

概念
可变集指的是元素, 集的长度都可变, 它的创建方式和不可变集的创建方式一致,只不过需要先导入可变集类。

手动导入: import scala.collection.mutable.Set

示例代码

import  scala.collection.mutable.Set
object 可变集合场景操作 {
  def main(args: Array[String]): Unit = {
    //1. 定义一个可变集,包含以下元素: 1,2,3, 4
    val set1 = Set(1, 2, 3, 4)
    //2. 添加元素5到可变集中
    set1.add(5)
    //3. 添加元素6, 7, 8到可变集中
    set1.add(6)
    set1.add(7)
    set1.add(8)
    //4. 从可变集中移除元素1
    set1 -= 1
    //5. 从可变集中移除元素3, 5, 7
    set1 --= List(3,5,7)

    //6. 打印结果.
    println(s"set1:${set1}")
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大数据老人家i

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

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

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

打赏作者

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

抵扣说明:

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

余额充值