Array
数组是一种可变的、可索引的数据集合。在Scala中用Array[T]的形式来表示Java中的数组形式 T[]
Array提供的函数
-
++
合并数组,返回一个新的数组
var a=Array(1,2)
var b=Array(3,4)
var c=a++b
-
++:
合并数组,类型以右边为主
var a=Array(1,2)
var b=Array(3,4)
var c=a++:b
var d=b++:a
-
+:
在集合前面增加元素
var a=List(1,2)
val c=+:a
var arr=Array(1,2,100)
0+:arr
-
:+
在集合后面增加元素,操作基本同+:
-
/:
对所有元素进行相同操作
val a=List(1,2,3,4)
val c=(a :/10)((x,y)=>{
println(x,y);x+y})
//或者简写如下
val b=(n /: a)(_+_) //n+1+2+3+4
val c=(n /: a)(_*_) //n*1*2*3*4
-
\:
与上述用法一致
5+4+3+2+1 区别在于加的顺序不同
- addString
将数组中的元素逐个添加到b中
val a=List(1,2,3,4)
val b=new StringBuilder()
val c=a.addString(b)
可在addString中增加分割符号
val c=a.addString(b,",") //输出1,2,3,4
a.addString(b2,"{",",","}")
- aggregate
聚合计算,aggregate是柯里化方法,参数是两个方法/函数
def main(args: Array[String]) {
val a = List(1,2,3,4)
val c = a.par.aggregate(5)(seqop,combop) //par多线运行
println("c:"+c)
}
//定义两个方法
def seqno(m:Int,n:Int): Int ={
return m+n
}
def combine(m:Int,n:Int): Int ={
return m+n
}
即seqop进行5+1,5+2,5+3,5+4
combop进行 6+7,8+9,13+17
输出:30
简写方法:
val c=a.par.aggregate(5)(_+_,_+_)
- apply
取出指定索引处的元素,元素下标从0开始
var a=Array(1,2,3)
//返回数组第n个元素
print(a.apply(n))
-
canEqual
判断是否可以比较 返回boolean -
charAt
获取索引处的字符,此方法会执行一个隐式转换,将Array转换成ArrayCharSequence(当T为char类型)
var chars=Array('a','b','c')
print(chars.charAt(0))
- clone
创建一个副本数组
var a=Array(1,2,3)
var b=a.clone()
- collect
通过执行一个并行计算,得到一个新的数组对象
如:将a替换成A
var chars=Array('a','b','a')
def fun:PartialFunction[Char,Char]={
case 'a' => 'A'
case x => x
}
var newchars=chars.collect(fun)
print(newchars.mkString(","))
- collectFirst
在数组中查找第一个符合偏函数定义的元素,并执行偏函数计算
var a=Array("a",2,"ai")
var res=a.collectFirst({
case x:Int => x*100})
println(res)
- combinations
排列组合,n为组合个数
var a=Array("a","b","c")
var newa=a.combinations(n)
newa.foreach((item) => println(item.mkString(",")))
a.combinations(3).foreach(x=>println(x.mkString(",")))
- contains
判断数组中是否包含指定对象,返回boolean
var a=Array("a","b","c")
var b=Array("a","c")
println(a.contains("b")) //true
- containsSlice
判断数组中是否包含另一数组,数组需要顺序一致
val a = List(1,2,3,4)
val b = List(2,3)
println(a.containsSlice(b)) //true
val c=Array(1,4)
println(a.containsSlince(c))
- copyToArray
将数组中的内容拷贝到另一个数组中
var a=Array('a','b','c')
var b:Array[Char]=new Array(5) //表示5个元素的位置
var c:Array[Char]=new Array(5)
var d:Array[Char]=new Array(5)
a.copyToArray(b) //直接拷贝a到b数组
println(b.mkString(","))
a.copyToArray(c,n) //拷贝a到b数组,第n个元素留空
println(c.mkString(","))
a.copyToArray(d,n,m) //拷贝a的前m个元素到b,前n个元素留空
println(d.mkString(","))
- copyToBuffer
将数组中的内容拷贝到Buffer中
//引入可变数组包
import scala.coll