学习scala笔记--5 scala数组

本文主要介绍了Scala中数组和ArrayBuffer的使用。包括数组的声明、与Java使用方式的不同,ArrayBuffer的可变长特性,如添加、插入、移除元素等操作。还涉及数组和ArrayBuffer的转换、遍历、求和、排序、过滤等操作,以及使用mkString方法转为字符串等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

 

 

数组声明

scala> val a = new Array[Int](10)

a: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)

 

 

使用时 a(0)---  和 Java不同 Java: a[0]

scala> a(0)=1

 

 

scala> for(x<-a){print(x)}

1000000000

 

 

----------------------------------

 

 

 

scala通过mkString方法把一个集合转化为一个字符串

 

 

scala> val b =Array("hello","world","!")

b: Array[String] = Array(hello, world, !)

 

scala> b.mkString

res9: String = helloworld!

 

scala> b.mkString("-")

res10: String = hello-world-!

 

 

 

----------------------------------

 

类型推断:

 

scala> val c = Array("hello",7)

c: Array[Any] = Array(hello, 7)

 

 

----------------------------------

 

 

Array长度不可变  c.length 获取长度

 

scala> val c = Array("hello",7)

c: Array[Any] = Array(hello, 7)

 

scala> c.length

res11: Int = 2

 

scala> 

 

scala> c(3)

java.lang.ArrayIndexOutOfBoundsException: 3

  ... 28 elided

 

----------------------------------

ArrayBuffer  是可变长的

 

 

 

scala> import scala.collection.mutable._

import scala.collection.mutable._

 

scala> val ab = new ArrayBuffer[Int]()

ab: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()

 

scala> ab(0)=1

java.lang.IndexOutOfBoundsException: 0

  at scala.collection.mutable.ResizableArray.update(ResizableArray.scala:48)

  at scala.collection.mutable.ResizableArray.update$(ResizableArray.scala:47)

  at scala.collection.mutable.ArrayBuffer.update(ArrayBuffer.scala:48)

  ... 28 elided

 

  

注意添加元素的方式

  

scala> ab += 1

res14: ab.type = ArrayBuffer(1)

 

scala> ab += 2

res15: ab.type = ArrayBuffer(1, 2)

 

scala> ab += 3

res16: ab.type = ArrayBuffer(1, 2, 3)

 

 

----------------------------------

 

ArrayBuffer 添加Array  使用 ++=

 

scala> val f = Array(100,200,300)

f: Array[Int] = Array(100, 200, 300)

 

scala> ab ++=f

res18: ab.type = ArrayBuffer(1, 2, 3, 100, 200, 300)

 

----------------------------------

 

 

ArrayBuffer  插入元素

 

scala> ab.insert(3,999)

 

scala> print(ab)

ArrayBuffer(1, 2, 3, 999, 100, 200, 300)

 

----------------------------------

 

ArrayBuffer  移除元素

 

scala> ab.remove(3)

res21: Int = 999

 

scala> print(ab)

ArrayBuffer(1, 2, 3, 100, 200, 300)

 

----------------------------------

 

ArrayBuffer删掉多个元素

 

 

scala> print(ab)

ArrayBuffer(1, 2, 3, 100, 200, 300)

scala> ab.remove(3,3)

 

scala> print(ab)

ArrayBuffer(1, 2, 3)

 

 

----------------------------------

 

Array  和  ArrayBuffer 的转换:toArray    toBuffer

 

 

scala> val abArray = ab.toArray

abArray: Array[Int] = Array(1, 2, 3)

 

 

scala> val abArrayBuffer = abArray.toBuffer

abArrayBuffer: scala.collection.mutable.Buffer[Int] = ArrayBuffer(1, 2, 3)

 

 

----------------------------------

遍历 数组

 

scala>  for(x<- 0 until ab.length){print(ab(x))}

12345678910

scala> 

 

----------------------------------

 

指定步长

 

 

scala> for(x<- 0 until (ab.length,2)){print(ab(x))}

13579

scala> 

 

 

----------------------------------

 

反向遍历  .reverse

scala>  for(x<- (0 until (ab.length,2)).reverse ){print(ab(x))}

97531

 

 

----------------------------------

 

简单的遍历

scala> for(x <- ab) print(x)

12345678910

 

 

----------------------------------

 

 

数组元素求和 

 

scala> val a = Array(1,2,3,4,5)

a: Array[Int] = Array(1, 2, 3, 4, 5)

 

scala> val asum = a.sum

asum: Int = 15

 

 

----------------------------------

 

数组最大值 最小值

 

scala> val a = Array(1,2,3,4,5)

a: Array[Int] = Array(1, 2, 3, 4, 5)

 

scala> a.max

res42: Int = 5

 

scala> a.min

res43: Int = 1

 

 

----------------------------------

 

数组排序

 

scala> import scala.util._

import scala.util._

 

scala> Sorting.quickSort(a)

 

scala> for(x<- a) print(x+" ")

0 1 2 3 3 4 5 7 8 77 88 99 

 

----------------------------------

 

数组 转为字符串

 

 

 

scala> a.mkString("-")

res51: String = 0-1-2-3-3-4-5-7-8-77-88-99

 

 

 

scala> a.mkString("<",",",">")

res52: String = <0,1,2,3,3,4,5,7,8,77,88,99>

 

 

----------------------------------

 

 

转换数组 把每个元素转变为其 平方

 

scala> val a = Array(1,2,3,4,5,6,7,8,9,10)

a: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

 

scala> val b = for(x<- a) yield x*x 

b: Array[Int] = Array(1, 4, 9, 16, 25, 36, 49, 64, 81, 100)

 

 

----------------------------------

 

 

ArrayBuffer   把每个元素 转为其平方

 

 

scala> import scala.collection.mutable._

import scala.collection.mutable._*

 

 

scala> c ++= Array(1,2,3,4,5,6)

res53: c.type = ArrayBuffer(1, 2, 3, 4, 5, 6)

 

 

scala> val d = for(x <- c ) yield x*x 

d: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 4, 9, 16, 25, 36)

 

----------------------------------

 

使用 filter   过滤数组

 

scala> a

res56: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

 

scala> a.filter( _ % 2 ==0)

res57: Array[Int] = Array(2, 4, 6, 8, 10)

 

scala> a.filter( _ ==4)

res58: Array[Int] = Array(4)

 

scala> a.filter( _ < 5)

res59: Array[Int] = Array(1, 2, 3, 4)

 

 

 

----------------------------------

 

使用map

 

 

scala> a.filter( _ % 2 ==0).map(_ * 2)

res60: Array[Int] = Array(4, 8, 12, 16, 20)

 

 

scala> a.filter( _ % 2 ==0).map(x=> x*x)

res62: Array[Int] = Array(4, 16, 36, 64, 100)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值