Scala for Impatient - Chapter 3
2013-08-30 14:05
316 查看
Work with Arrays
Fixed-Length Arrays
如果是数组长度不可变,就直接使用Array类型。在JVM中, scala的Array实际上就对应着Java中的Arrayval nums = new Array[Int](10) val a = Array[String](10) val s = Array("Hello", "world") s(0) "Goodbye" // use () instead of [] to access elements
Variable-Length Arrays: Array Buffers
scala中的ArrayBuffer,就相当于java中的ArrayList。下面这个例子中,不要奇怪是一个加号还是两个加号, 这不是运算符,而是ArrayBuffer的方法,具体参考scaladoc
import scala.collection.mutable.ArrayBuffer val b = new ArrayBuffer[Int]() b += 1 // (1) b += (1, 2, 3, 4) // (1, 1, 2, 3, 4) b ++= ArrayBuffer(1, 2, 3, 4) // (1, 1, 2, 3, 4, 1, 2, 3, 4) b.trimEnd(5) // (1, 1, 2, 3)
ArrayBuffer在末尾操作是效率最高的, 在中间添加或删除,都将导致其后的所有元素移动
ArrayBuffer.toArray => convert ArrayBuffer to Array
Array.toBuffer => convert Array to ArrayBuffer
Traversing Arrays and Array Buffers
scala中这两者的操作方式基本相同for ( i <- 0 until array.length) println(i + ":" + array(i))
倒序遍历
for ( i <- (0 until array.length).reverse) println(i + ":" + array(i))
如果不需要index
for ( a <- array) println(a)
Transforming Arrays
这里transform的意思就是指filter/map/select/each这种比较FP的写法a filter { _ % 2 == 0} map { 2 * _ }
Common Algorithms
scala提供了一些buildin functions来方便对array的操作Array(1, 2, 7, 9).sum // 19 // works for ArrayBuffer too ArrayBuffer("Mary", "had", "a", "little", "lamb").max // "little" val b = ArrayBuffer(1, 7, 2, 9) val bSorted = b.sorted // b is unchanged, bSorted is ArrayBuffer(1, 2, 7, 9) val bDescending = b.sortWith(_ > _) // ArrayBuffer(9, 7, 2, 1)
Multidimentional Arrays
声明是,需要用ofDimval matrix = Array.ofDim[Double](3, 4)
访问时, 用两个括号
matrix(row)(column) = 42
Interoperating with Java
import scala.collection.JavaConversions相关文章推荐
- Scala for the Impatient - (Chapter 1, 2)
- 《快学Scala》, <Scala For the Impatient>习题第三章
- Scala for the Impatient课后练习(第1章 The Basics)
- 《快学Scala》, <Scala For the Impatient>习题第二章
- scala 学习笔记(scala for the impatient)
- Play For Scala 开发指南 - 第10章 MongoDB 开发
- Scala Cookbook读书笔记 Chapter 3.Control Structures 第一部分
- Scala for the Impatients---(6)Objects
- Actors in Scala(Scala中的Actor)(预打印版) 第三章 Scala’s Language Support for Actors (A)
- scala学习手记38 - 方法命名约定和for表达式
- 第87讲:Scala中F使用For表达式做查询学习笔记
- NSUndoManager(Chapter 9 of Cocoa Programming for Mac OS X)
- SPARK--Windows下利用scala for eclipse搭建简易的spark开发环境
- Scala之for循环
- 在Scala IDEA for Eclipse或IDEA里程序编译实现与在Spark Shell下的对比(其实就是那么一回事)
- scala for spark
- Shaders for Game Programmers and Artists代码实现Chapter_0401
- scala for 学习
- Scala IDE for Eclipse 解析代码错误
- Getting Started | Scala IDE for Eclipse Space | Assembla