scala--Array的函数

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(123)
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
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值