Scala快速入门-3-常用数组操作

简介: 长度固定使用Array,长度有变化使用ArrayBuffer提供初始值时不要使用new用()来访问元素for(elem <- arr)遍历元素for(elem <- arr if ...) yield ...将原数组转为新数组

知识点


  • 长度固定使用Array,长度有变化使用ArrayBuffer
  • 提供初始值时不要使用new
  • 用()来访问元素
  • for(elem <- arr)遍历元素
  • for(elem <- arr if ...) yield ...将原数组转为新数组

定长数组


  • 10个整数的数组,所有元素初始为0
1. scala> val nums = new Array[Int](10)
2. nums: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
• 10个元素的字符中数组,所有元素初始化为null
scala> val str = new Array[String](10)
str: Array[String] = Array(null, null, null, null, null, null, null, null, null, null)
  • 提供初始值就不需要new,长度为2的Array[String],类型是推断出来的
5. scala> val str1 = Array("Hello", "Scala")
6. str1: Array[String] = Array(Hello, Scala)
• 使用()来访问元素
7. scala> val s = str1(0)
8. s: String = Hello

变长数组


  • 与Java中ArrayList功能等效的数据结构ArrayBuffer
  • 初始化一个空的可变长数组,准备存入整数
scala> import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.ArrayBuffer
scala> val b = ArrayBuffer[Int]()
b: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()
  • 用+=在尾添加元素或多个用括号包都来的元素
scala> b += 1
res0: b.type = ArrayBuffer(1)
scala> b += (1, 2, 3)
res1: b.type = ArrayBuffer(1, 1, 2, 3)
  • 用++=操作符追加任何集合
11. scala> b ++= Array(6, 8, 9)
12. res2: b.type = ArrayBuffer(1, 1, 2, 3, 6, 8, 9)
• 移除最后2个元素scala> b.trimEnd(2)
scala> b
res4: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 1, 2, 3, 6)

  • 可在任意位置插入或移除元素(不高效,所有在那个位置后面的元素都必须被平移)
// 在下标2之前插入
scala> b.insert(2, 4)
scala> b
res6: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 1, 4, 2, 3, 6)
// 在下标2之前插入多个元素
scala> b.insert(2, 4, 5)
scala> b
res8: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 1, 4, 5, 4, 2, 3, 6)
  • 定长数组与变长数据转换
// 转成定长数组
scala> b.toArray
res9: Array[Int] = Array(1, 1, 4, 5, 4, 2, 3, 6)
// 转成变长数组
scala> b.toBuffer
res10: scala.collection.mutable.Buffer[Int] = ArrayBuffer(1, 1, 4, 5, 4, 2, 3, 6)

遍历数组


// 使用下标访问
scala> for (i <- 0 until b.length)
     | println(i + ":" + b(i))
0:1
1:1
2:4
3:5
4:4
5:2
6:3
7:6
// 不使用下标
scala> for(elem <- b)
     | println(elem)

数组转换


  • for推导式,从一个数组转换,生成一个全新的数组
1. scala> val a = Array(2, 3, 5, 7)
2. a: Array[Int] = Array(2, 3, 5, 7)
3. 
4. scala> val res = for(elem <- a) yield 2 * elem
5. res: Array[Int] = Array(4, 6, 10, 14)
6. 
7. scala> a
8. res13: Array[Int] = Array(2, 3, 5, 7)
• for推导式,从一个ArrayBuffer转换,生成一个全新的ArrayBuffer
9. scala> a.toBuffer
10. res14: scala.collection.mutable.Buffer[Int] = ArrayBuffer(2, 3, 5, 7)
11. 
12. scala> val res = for(elem <- res14) yield 2 * elem
13. res: scala.collection.mutable.Buffer[Int] = ArrayBuffer(4, 6, 10, 14)

欢迎留言交流,敬请期待下一篇~

目录
打赏
0
0
0
0
10
分享
相关文章
|
8月前
|
Scala 数组
Scala 数组
62 1
scala-模式匹配(字符串、数组、元组、集合、类、偏函数)
scala-模式匹配(字符串、数组、元组、集合、类、偏函数)
68 0
Scala快速入门--Scala环境搭建【Windows10】图解
Scala快速入门--Scala环境搭建【Windows10】图解
217 0
大数据开发基础的编程语言的Scala的字符串/数组/集合
Scala是一种基于JVM的编程语言,它支持丰富的字符串、数组和集合操作。本文将介绍Scala中这些数据类型的概念和用法,帮助开发者更好地理解和应用这门语言。
115 0
Scala快速入门-11-常用集合操作
所有的集合都扩展自Iterable特质 集合有三大类,分别为序列、集和映射 几乎所有集合类,Scala都同时提供了可变和不可变的版本 Scala列表要么是空的,要么拥有一头一尾,其中尾部本身又是一个表列 集是无先后次序的集合 用LinkedHashSet来保留插入顺序,或用SortedSet来按顺序进行迭代 +将元素添加到无先后次序的集合中;+:和:+向前或向后追加到序列;++将两个集合串接在一起;-和--移除元素 映射、折叠和拉链操作是很有用的技巧,用来将函数和操作应用到集合中的元素
Scala快速入门-10-模式匹配与样例类
mathch表达式是一个更好的switch,不会有穿透到下一个分支的问题 如果没有模式能够匹配,会抛出MatchError,可以用case _ 模式来避免,相当于Java中的default 模式可以包含一个随意定义的条件,称做守卫 可以匹配数组、列表、元组等模式,然后将匹配到不同部分绑定到变量 样例类及密封类的模式匹配 用Option来存放可能存在也可能不存在的值,比null更安全
Scala快速入门-9-高阶函数
作为值的函数 创建匿名函数 带函数参数的函数 闭包 柯里化
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问