快速入门Scala⑤ 对数组的操作

数组

Scala中,有两种数组,一种是定长数数组,另一种是变长数组

定长数组

  • ·定长数组指的是数组的长度不允许改变
  • 数据的元素是可以改

语法:

// 通过制定长度定义数组
var/val 变量名 = new Array[元素类型](数组长度)
// 用元素直接初始化数组
var/val 变量名 = Array(元素1,元素2,元素3....)

参考代码:

scala> var list=new Array[Int](10)
list: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
scala> list(0)=100
scala> println(list(0))
100

变长数组

变长数组制定的数组的长度可以变的,可以往数组中添加、删除元素。

语法:

  • 需要提前导入ArrayBuffer类(import scala.collection.mutable.ArrayBuffer
  • 创建空的ArrayBuffer变长数组,语法结构是:

var/val 变量名=ArrayBuffer[元素类型]()

  •  创建带初始化元素的ArrayBuffer
  • var/val 元素名 = ArrayBuffer(元素1,元素2,元素3...)

示例一:

定义一个长度为0的整形变长的数组

参考代码

var a=ArrayBuffer[Int](0)
import scala.collection.mutable.ArrayBuffer
scala> 
scala> a: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(0)

示例二:

定义一个包含"hadoop","storm","spark","scala"元素的变长数组

参考代码

scala> var a=ArrayBuffer("hadoop","storm","spark","scala")
a: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(hadoop, storm, spark, scala)

添加/修改/删除元素

  • 使用+=添加元素
  • 使用-=删除元素
  • 使用++=追加一个数组到变长数组
  • 使用索引修改元素

参考代码

// 创建一个可变的数组
scala> var a=ArrayBuffer("hadoop","storm","spark","scala")
a: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(hadoop, storm, spark, scala)
// 添加一个元素
scala> a+="java"
res3: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(hadoop, storm, spark, scala, java)
// 删除一个元素
scala> a-="java"
res4: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(hadoop, storm, spark, scala)
// 添加一个数组
scala> a++=Array("hive","java","hue")
res5: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer(hadoop, storm, spark, scala, hive, java, hue)
// 修改元素
scala> a(0)="hello"
println(a)
scala> ArrayBuffer(hello, storm, spark, scala, java, hive, java, hue)

循环遍历

  • 使用for 表达式直接遍历数组中的元素
  • 使用索引遍历数组中的元素

参考代码

// 方式一
scala> val a = Array(1,2,3,4,5)
a: Array[Int] = Array(1, 2, 3, 4, 5)
scala> for(i <- a){
  println(i)
}
//方式二
scala> for (i <- 0 to a.length-1) {
  println(i)
}

练习题

//定义一个数组arr1内容为1-10
var arr1=Array(1,2,3,4,5,6,7,8,9,10)
//使用filter过滤器,过滤出来偶数
arr1.filter(_%2==0)
//使用map把arr1数组中每一个元素都取出来放到一个全新数组
var arr2= arr1.map(x => x)
//使用foreach打印出arr1数组中的元素
arr1.foreach(println(_))
//翻转数组arr1 
arr1.reverse
//修改数组arr1中下标为0的数据为100
arr1(0)=100
//删除arr1数组下标为0的数据
arr1.drop(1).foreach(println(_))
//arr1数组从下标2开始,删除3个元素
arr1.take(2) ++ arr1.drop(5)
//插入数据到arr1数组, 第一个参数是开始的位置,插入50,66,77
arr1 = (ArrayBuffer(55, 66, 77) ++= arr1).toArray
//对arr1数组进行降序排列
val sorted = arr1.sorted.reverse
sorted.foreach(println(_))
//创建ArrayBuffer
var arr3 = ArrayBuffer(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
//使用trimEnd()函数,可以从尾部截取指定的元素
arr3.trimEnd(2)
//使用insert 参数一 插入数据的索引,第二个参数插入的数据可有多个
arr3.insert(0,22)
// 删除角标是1到3的元素
arr3.remove(1,3)

2\: 威威

发布了88 篇原创文章 · 获赞 99 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/qq_43791724/article/details/105147840