ITPub博客

首页 > 数据库 > 数据库开发技术 > Scala快速入门-3-常用数组操作

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

原创 数据库开发技术 作者:HelloTech技术派 时间:2018-01-02 23:34:44 0 删除 编辑

知识点

  • 长度固定使用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

  1. scala> val str = new Array[String](10)

  2. str: Array[String] = Array(null, null, null, null, null, null, null, null, null, null)

  • 提供初始值就不需要new,长度为2的Array[String],类型是推断出来的

  1. scala> val str1 = Array("Hello", "Scala")

  2. str1: Array[String] = Array(Hello, Scala)

  • 使用()来访问元素

  1. scala> val s = str1(0)

  2. s: String = Hello

变长数组

  • 与Java中ArrayList功能等效的数据结构ArrayBuffer

  • 初始化一个空的可变长数组,准备存入整数

  1. scala> import scala.collection.mutable.ArrayBuffer

  2. import scala.collection.mutable.ArrayBuffer

  3. scala> val b = ArrayBuffer[Int]()

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

  • 用+=在尾添加元素或多个用括号包都来的元素

  1. scala> b += 1

  2. res0: b.type = ArrayBuffer(1)

  3. scala> b += (1, 2, 3)

  4. res1: b.type = ArrayBuffer(1, 1, 2, 3)

  • 用++=操作符追加任何集合

  1. scala> b ++= Array(6, 8, 9)

  2. res2: b.type = ArrayBuffer(1, 1, 2, 3, 6, 8, 9)

  • 移除最后2个元素

  1. scala> b.trimEnd(2)

  2. scala> b

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

  • 可在任意位置插入或移除元素(不高效,所有在那个位置后面的元素都必须被平移)

  1. // 在下标2之前插入

  2. scala> b.insert(2, 4)

  3. scala> b

  4. res6: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 1, 4, 2, 3, 6)

  5. // 在下标2之前插入多个元素

  6. scala> b.insert(2, 4, 5)

  7. scala> b

  8. res8: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 1, 4, 5, 4, 2, 3, 6)

  • 定长数组与变长数据转换

  1. // 转成定长数组

  2. scala> b.toArray

  3. res9: Array[Int] = Array(1, 1, 4, 5, 4, 2, 3, 6)

  4. // 转成变长数组

  5. scala> b.toBuffer

  6. res10: scala.collection.mutable.Buffer[Int] = ArrayBuffer(1, 1, 4, 5, 4, 2, 3, 6)

遍历数组

  1. // 使用下标访问

  2. scala> for (i <- 0 until b.length)

  3.     | println(i + ":" + b(i))

  4. 0:1

  5. 1:1

  6. 2:4

  7. 3:5

  8. 4:4

  9. 5:2

  10. 6:3

  11. 7:6

  12. // 不使用下标

  13. scala> for(elem <- b)

  14.     | println(elem)

  15. 1

  16. 1

  17. 4

  18. 5

  19. 4

  20. 2

  21. 3

  22. 6

数组转换

  • for推导式,从一个数组转换,生成一个全新的数组

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

  2. a: Array[Int] = Array(2, 3, 5, 7)

  3. scala> val res = for(elem <- a) yield 2 * elem

  4. res: Array[Int] = Array(4, 6, 10, 14)

  5. scala> a

  6. res13: Array[Int] = Array(2, 3, 5, 7)

  • for推导式,从一个ArrayBuffer转换,生成一个全新的ArrayBuffer

  1. scala> a.toBuffer

  2. res14: scala.collection.mutable.Buffer[Int] = ArrayBuffer(2, 3, 5, 7)

  3. scala> val res = for(elem <- res14) yield 2 * elem

  4. res: scala.collection.mutable.Buffer[Int] = ArrayBuffer(4, 6, 10, 14)


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


原文作者:HelloTech技术派;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2017-12-05

  • 博文量
    181
  • 访问量
    73728