数组操作
- 初始化固定长度的数组
// 初始化长度为10的数组 val array = new Array[Int](10) // 初始化创建含有hello与Scala的数组 val s = Array("hello","scala")
- 创建可变的数组(类似java的集合)
Scala中创建长度可变的数组,类似与java中的ArrayList一样Scala提供了ArrayBuffer,下面是ArrayBuffer的用法: // 创建集合等同于下面的new ArrayBuffer[Int]() val b = ArrayBuffer[Int]() new ArrayBuffer[Int]() // 集合添加元素类似与java中的list.add()多次调用添加函数 b += (1,2,3,4,5,6) // 可以追加新的集合元素类似java中的list.addAll() b ++=Array(7,8,9,10) // 移除前//5个元素 b.trimstart(5) /** * 数组尾部删除或者添加元素是非常快,但是中间 * 插入元素或者移除元素,操作较慢 */ val c = new ArrayBuffer[Int]() c+=(1,3) // 在索引2处插入元素6 c.insert(2,6)// ArrayBuffer(1,6,3) // 删除索引为2元素 c.remove(2) // 删除索引1后一个元素 c.remove(1,1) 有时候创建元素,不知道存储多少元素可以创建数组缓存ArrayBuffer,然后调用toArray方法将缓冲区间转为Array(类似于java中StringBuffer.toString方法)
- 遍历数组和数组缓冲
val a = ArrayBuffer[Int]() a+=(1,6) //遍历数组(变量i取值从0到a.length-1) for(i<- 0 until a.length) println(a(i)) println(a(i) // 遍历偶数下标索引元素 for(i<- 0 until (a.length,2)) println(a(i)) // 倒着遍历索引 for(i<- (0 until a.length).reverse) println(a(i)) // yield元素填充 val result =for (e <- list) yield e *2 // 数组转换 val list = Array(1,4) // yield元素填充 val result = for (e <- list) yield e * 2 println(result.toBuffer) // 舍弃偶数元素 val res = for (e <- list if e % 2 == 0) yield e println(res.toBuffer) // 也可以使用函数式编程使用filter和Map val req = a.filter(_ % 2 == 0).map(2 * _) }
- Scala的常用算法
Scala中有计算求和和排序 val list = Array(1,4) // 求和,求数组最大值,排序,而排序并不会影响原有的数组 println(list.sum,list.max,list.sorted.toBuffer)
方法 | 方法描述 |
---|---|
def append(elems:A*):Unit | 方法接受多个类型为A的元素,例如b.append(1,2)将对b追加2个元素 |
def count(p:(A)=>Boolean):Int | 方法接受一个布尔值表达式,例如a.count(_>0)将会统计多个正数 |
方法demo
val list = Array(8,1,4) val bs = list.sorted.toBuffer bs.append(1,2) println(bs) // 统计集合大于4的元素个数 println( bs.count(_ > 4))