Scala学习笔记--数组
2015-08-21 23:25
316 查看
对于Scala来说,数组是一块相当总要的内容,因此掌握是十分重要的。
数组分为两种:定长数组(Array) 变长数组(Arraybuffer)
Array:
//10个整数的数组,所有元素的初始化为0
val nums = new ArrayString
Arraybuffer:
import scala.collection.mutable.ArrayBuffer
//或者是new ArrayBuffer[Int] 一个空的数组缓冲,准备存放整数
val b = ArrayBufferInt
//ArrayBuffer[1],+= 表示在尾端添加一个
b += 1
b += (1,2,3,4)
//++= 操作符追加任何集合
b ++= Array(8,13,21)
//移除最后5个元素
b.trimEnd(5)
//在下标为2之前插入一个6
b.insert(2,6)
//在下标为2之前插入:7,8,9
b.insert(2,7,8,9)
//把下标为2的删除
b.remove(2)
//从下标为2向后删除3个
b.remove(2,3)
1>循环遍历
格式:
for(i <- 0 until a.length)
println(a(i)) //> null
还可以这样
for(elem <- a)
println(elem)
2>数组转换
val a = Array(2,3,5,7,11) //> a : Array[Int] = Array(2, 3, 5, 7, 11)
val result = for(elem <- a) yield 2*elem //> result : Array[Int] = Array(4, 6, 10, 14, 22)
for(…)yield循环可以创建出来一个新的数组,也不会修改原有的数组
//如果你在遍历的时候只想把满足条件的筛选出来,可以通过守卫实现,就是在for中添加if实现
for(elem <- a if(elem %2 == 0))yield 2*elem
数组分为两种:定长数组(Array) 变长数组(Arraybuffer)
Array:
//10个整数的数组,所有元素的初始化为0
val nums = new ArrayString
//长度为2的Array[String]--类型是推断出来的 //注:已提供初始值就不需要new了 val s = Array("hello","Spark")
Arraybuffer:
import scala.collection.mutable.ArrayBuffer
//或者是new ArrayBuffer[Int] 一个空的数组缓冲,准备存放整数
val b = ArrayBufferInt
//ArrayBuffer[1],+= 表示在尾端添加一个
b += 1
b += (1,2,3,4)
//++= 操作符追加任何集合
b ++= Array(8,13,21)
//移除最后5个元素
b.trimEnd(5)
//在下标为2之前插入一个6
b.insert(2,6)
//在下标为2之前插入:7,8,9
b.insert(2,7,8,9)
//把下标为2的删除
b.remove(2)
//从下标为2向后删除3个
b.remove(2,3)
1>循环遍历
格式:
for(i <- 0 until a.length)
println(a(i)) //> null
还可以这样
for(elem <- a)
println(elem)
2>数组转换
val a = Array(2,3,5,7,11) //> a : Array[Int] = Array(2, 3, 5, 7, 11)
val result = for(elem <- a) yield 2*elem //> result : Array[Int] = Array(4, 6, 10, 14, 22)
for(…)yield循环可以创建出来一个新的数组,也不会修改原有的数组
//如果你在遍历的时候只想把满足条件的筛选出来,可以通过守卫实现,就是在for中添加if实现
for(elem <- a if(elem %2 == 0))yield 2*elem
//而在生成情况下是: a.filter(_ % 2 == 0).map(2*_) //注意:元素的类型必须是数值类型:要么是整型,要么是浮点数或是BigInteger/BigDecimal Array(1,7,2,9).sum //> res0: Int = 19 ArrayBuffer(1,7,2,9).sum //> res1: Int = 19 //此时是字符串,进行max操作的时候是看那个字符串最长 ArraryBuffer("Mary","had","a","little","lamb").max //little sorted方法将数组或数组缓冲排序并返回经过排序的数组或数组缓冲,这个过程不会修改原始版本: val b = ArraryBuffer(1,7,2,9) val bSorted = b.sorted(_ < _)//b没有被改变,bSorted是ArraryBuffer(1,2,7,9) val bSorted = b.sorted(_ > _)//b没有被改变,bSorted是ArraryBuffer(9,7,2,1) 如果想要显示数组或数组缓冲的内容,可以使用mkString方法,它允许你指定元素之间的分隔符。 a.mkString(" and ") //"1 and 2 and 7 and 9" a.mkString("<",",",">") //"<1,2,7,9>" 多维数组 Array[Array[Double]] 可以使用ofDim方法: val matrix = Array.ofDim[Double](3,4)//3行,4列 //比如想访问第二行,第三列 matrix(1)(2) = 42 //创建不规则的数组,每一行的长度个不相同 val triangle = new Array[Array[Int]](10) for(i <- triangle) triangle(i) = new Array[Int](i + 1)
相关文章推荐
- UI_06 UIControl及其子类
- string和stringstream用法总结
- 数据结构学习笔记之队列
- UIAlerViewController的使用
- vijos - P1092全排列 (康托展开 + 康托展开的逆运算)
- A Round Peg in a Ground Hole - POJ 1584
- 【springmvc】java web使用ajaxSubmit方法实现Excel文件上传
- Redis(7)Creating and Using Cluster Mode
- iOS程序员面试要注意的几个问题
- vs2012快捷键失效解决办法
- 和为定值的两个数
- hdu 3874 Necklace(离线操作+树状数组或线段树)
- 2015/08/21
- lncRNA研究
- F#相关图书推荐
- iOS开发所需英语词汇整理
- 2015-8-1(1)
- 模拟 nbut1225 NEW RDSP MODE I
- sqlite3 journal
- SPOJ 3267 DQUERY(主席树在线|树状数组离线)