• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
戈瑾
博客园    首页    新随笔    联系   管理    订阅  订阅
spark学习进度5——Scala中的数组

一、数组分类

  • mutable 可变——元素个数和值等可以改变(需要导包)

  • immutable不可变——数组的长度不能被改变,但是值可以被改变 

在scala.collection.mutable/immutable包中,常用的Array就是immutable下面的数组。

 


 

二、不可变数组

1、语法

    var arr1=Array(11,22,33)
    var arr2: Array[Any] =Array(11,22,"zhangsan")
    var arr3: Array[Int] =Array[Int](11,22,33)

注意:

  • 如果数组在声明的时候不定义数据类型,会进行自适配,返回最后的父类。

  • Scala中的数组中可以存放不同的数据类型。

  • 如果数组中的数据元素类型不一样,会转换成就近的父类型

      例如:var arr1: Array[AnyVal] =Array[AnyVal](11,22,33,true)

2、指定长度声明

  • 如果指定了数组的类型是可以按如下声明;
val arr1=new Array[Int](3)
  • 如果没有指定数组的类型直接给了数组固定的长度,那么返回结果是Nothing类型。Nothing类型代表错误。所以如果new Array必须添加类型: new Array[Int](4)。如果不加泛型则内容都是Nothing,不能存放任何的值。
var arr: Array[Nothing] =new Array(3)
  • 不可变数组指的是: 一旦当前数组声明完成以后,数组的长度是不可以改变的,但是数组中元素的值是可以改变的。

3、数组取值

按数组的下标进行取值,和赋值的方式一样的,都是通过下标操作:

java  [ ]------->arr[index]

scala ( )------->arr(index)

 

 4、不可变数组拼接

(1)数组的长度不能改变,但是数组可以和数组进行拼接形成新的数组,原来数组的长度不变。

(2)使用 ++ 进行拼接数组, ++是Scala中的一个方法

(3)如果拼接单个元素使用 :+


 

 三、可变数组

murable包下面的可变集合ArrayBuffer——声明使用var声明

1、声明方式

声明的时候需要导包:import scala.collection.mutable.ArrayBuffer

如果使用的是new的方式创建的ArrayBuffer,必须声明泛型,不然自适配类型是Nothing

 2、基本操作

 声明:var array=ArrayBuffer(1,2,3,4,5)

添加数据: +=

添加数组: ++   /   ++=

删除数组中单个数据: -=

删除数组中的数组: --  /  --=

 

 3、其他操作

添加数据:insert(index,data)  /  insert(index,data1,data2......)

 

 删除数据:remove(index)   /  remove(index,删除几个元素)

 

清空数组中所有元素:clear

判断当前集合中元素是否为空:imEmpty

此外还有,max、min、sum、length、sorted等方法


 

四、转换

Array转成ArrayBuffer: toBuffer

ArrayBuffer转成Array:toArray

 

 

posted on 2022-01-05 19:57  戈瑾  阅读(338)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3