Scala

++
合并集合,并返回一个新的数组

scala> var  a=Array(1,2,3)
a: Array[Int] = Array(1, 2, 3)
 
scala> var b=Array('a','b','c')
b: Array[Char] = Array(a, b, c)
 
scala> a++b
res197: Array[AnyVal] = Array(1, 2, 3, a, b, c)
++:
并数组,结果由冒号右边类型决定

scala> var a=Array(1,2,3)
a: Array[Int] = Array(1, 2, 3)
 
scala> var b=List(4,5,6)
b: List[Int] = List(4, 5, 6)
 
scala> a++:b
res5: List[Int] = List(1, 2, 3, 4, 5, 6)
 
scala> b++:a
res6: Array[Int] = Array(4, 5, 6, 1, 2, 3)
 
*******************************************************
scala> var  a=Array(1,2,3)
a: Array[Int] = Array(1, 2, 3)
scala> var b=Array('a','b','c')
b: Array[Char] = Array(a, b, c)
scala> a++:b
res198: Array[AnyVal] = Array(1, 2, 3, a, b, c)
 
scala> b++:a
res199: Array[AnyVal] = Array(a, b, c, 1, 2, 3)

 +:/:+
冒号跟着集合,在数组前或后加值

scala> var  a=Array(1,2,3)
a: Array[Int] = Array(1, 2, 3)
scala> a:+4
res201: Array[Int] = Array(1, 2, 3, 4)
 
scala> 4+:a
res202: Array[Int] = Array(4, 1, 2, 3)
 /: :\
左子树加,右子树加

scala> var  a=Array(1,2,3)
scala> (10 /: a)((x,y)=>{println(x,y);x+y})
(10,1)
(11,2)
(13,3)
res218: Int = 16
 
scala> (a :\ 10)((x,y)=>{println(x,y);x+y})
(3,10)
(2,13)
(1,15)
res219: Int = 16
addString
将数组中的元素逐个添加到StringBuilder中

scala> var  a=Array(1,2,3)
scala> var c=new StringBuilder()
c: StringBuilder =
 
scala> a.addString(c)
res224: StringBuilder = 123
 
scala> var d=new StringBuilder()
d: StringBuilder =
 
scala> a.addString(d,"-")
res225: StringBuilder = 1-2-3
 
scala> var f=new StringBuilder()
f: StringBuilder =
 
scala> a.addString(f,"(","-",")")
res226: StringBuilder = (1-2-3)

aggregate
聚合计算,是柯理化方法,参数是两个方法

scala> var a=Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14)
a: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
不分区计算,串型计算
scala> a.aggregate(1)((x,y)=>x+y,(x,y)=>x+y)
res228: Int = 106
scala> a.aggregate(1)((x,y)=>x+y,(x,y)=>x+y)
res229: Int = 106
 
并行
scala> a.par.aggregate(10,0)((x,y)=>{if (y>10) (x._1,x._2+1) else x },(x,y)=>(x._1,x._2+y._2))
res236: (Int, Int) = (10,4)
 apply
取下标对应的值,必须为Int类型

scala> var a=Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14)
scala> a.apply(1)
res238: Int = 2
 
scala> a.apply(0)
res239: Int = 1
charAt 
charAt(index:Int)和apply功能类似

scala> var b=Array('a','b','c')
b: Array[Char] = Array(a, b, c)
 
scala> b
res242: Array[Char] = Array(a, b, c)
 
scala> b.charAt(1)
res243: Char = b
 clone
创建一个副本(默认为浅拷贝,即拷贝对象的引用,拷贝中数据改变原值也会改变)

scala> var b=Array('a','b','c')
b: Array[Char] = Array(a, b, c)
scala> var c=b.clone()
c: Array[Char] = Array(a, b, c)
scala> c
res245: Array[Char] = Array(a, b, c)
collect  PartialFunction
collect 通过执行一个并行计算(偏函数),得到一个新对象
PartialFunction(入参,出参) 即只处理指定数据

scala> var a=Array(1,2,3,4,5,6)
a: Array[Int] = Array(1, 2, 3, 4, 5, 6)
scala> def fun:PartialFunction[Int,Int]={
     | case 2=>4
     | case 3=>5
     | case 4=>6
     | case x=>x}
scala> a.collect(fun)
res251: Array[Int] = Array(1, 4, 5, 6, 5, 6)
 
scala> c
res245: Array[Char] = Array(a, b, c)
scala> c.collect(x=>x match {case 'a' =>"A"  case _=>"demo"})
res249: Array[String] = Array(A, demo, demo)
collectFirst
在序列中查找第一个符号偏函数定义的元素,并执行偏函数计算

scala> def fun:PartialFunction[Any,Int]={case x:Int=>x*10}
fun: PartialFunction[Any,Int]
 
scala> var a=Array(1,'a',"a")
a: Array[Any] = Array(1, a, a)
 
scala> a.collectFirst(fun)
res252: Option[Int] = Some(10)
 
scala> res252.getOrElse(-1)
res253: Int = 10
combinations
排列组合

scala> var a=Array(1,2,3,4)
a: Array[Int] = Array(1, 2, 3, 4)
scala> a.combinations(2)
res258: Iterator[Array[Int]] = non-empty iterator
 
scala> res258.foreach(x=>println(x.mkString(",")))
1,2
1,3
1,4
2,3
2,4
3,4
contains
序列中是否包含指定对象

scala> a
res262: Array[Int] = Array(1, 2, 3, 4)
 
scala> a.contains(1)
res263: Boolean = true
containsSlice
类型,值,顺序都要匹配,不比较长度

scala> a
res264: Array[Int] = Array(1, 2, 3, 4)
scala> var b=Array(1,2)
b: Array[Int] = Array(1, 2)
 
scala> a.containsSlice(b)
res266: Boolean = true
 
scala> var b=Array(2,1)
b: Array[Int] = Array(2, 1)
 
scala> a.containsSlice(b)
res267: Boolean = false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值