Scala集合和数组

集合
可变集合,不可变集合
可变集合,可扩展、添加元素、删除、修改
不可变集合,可以模拟添加、删除

1.区别:
A (1,2,3) 不可变集合=> 模拟添加元素4,生成一个新的集合(1,2,3,4) 集合A不变
A (1,2,3) 可变集合=> 添加元素4,集合A变成(1,2,3,4)

2.使用时选择,使用可变集合还是使用不可变集合。
首选不可变集合。效率高,占用的存储空间更少

3.线程是否安全(Spark要做并行程序)
多线程如何选择集合?
如果选择非线程安全的集合:1.自己去加锁。2.把集合局部到一个线程里,不做共享数据。

数组
定长数组和变长数组

定长数组

object ArrayDemo {

  // 数组可以随机存取   通过下标  顺序存储 读取查询的效率比较高  删除和添加修改效率低
  // 经常修改使用链表

  //
  def main(args: Array[String]): Unit = {

    // 定义数组
    val arr = Array(10,20,30)

    // 声明长度为10,初始值为0的一个数组
    val arr2 = new Array[Int](10)

    // 访问数组
    println(arr(2))
    // 输出整个数组
    println(arr2.toBuffer)
    // 遍历数组
    for (i <- arr)
      println(i)

    // 修改数组元素
    arr(0) = 100
    println(arr(0))

    // 定长数组可变集合的一种,但是长度不可变。。。

  }

}

变长数组

import scala.collection.mutable.ArrayBuffer

/**
  * 可变数组
  */
object ArrayBufferDemo {

  def main(args: Array[String]): Unit = {

    // 定义一个变长数组
    val nums = ArrayBuffer[Int]()
    // 在尾部添加元素
    nums += 10
    // 在尾部追加多个元素
    nums += (20,30,40)
    // 在尾部追加一个集合
    nums ++= Array(50,60)
    println(nums)

    // +=对应-= ++= 对应 --= 效果相反  在尾部删除元素  后面一定跟集合

    // 可以使用append追加
    nums.append(100,200,3,1,2,3,5,6,72,4,234,234,132,123,25,536,2)
    println(nums)

    // 使用insert在某个位置插入元素
    nums.insert(5,666)
    println(nums)

    // 删除元素 剪断
    nums.trimEnd(10)

    println(nums)

    // 给insert对应的删除元素的方法remove
    nums.remove(2,2)
    println(nums)

    // 数组的遍历
    // Scala两种遍历方式


    // todo
    // 定长数组和变长数组的转换
    val arr = Array(1,2,3)
    // 变长转化为定长数组
    nums.toArray
    // 定长数组转化成变长数组
    arr.toBuffer

    // 求和的方法
    val res1 = nums.sum
    // 元素最大值
    val res2 = nums.max
    // 元素最小值
    val res3 = nums.min
    // 排序
    val res4 = nums.sorted  // 括号里可以写自定义的排序方式   默认升序

    val res5 = nums.sorted.reverse  // 逆序

    println(res5)

  }

}

猜你喜欢

转载自blog.csdn.net/qq_41212491/article/details/87099159