Scala中Array常用的方法(1)
创始人
2025-06-01 19:48:19
0

        在scala中,Array有大量的方法。定义一个数组arr后,输入arr.后按下tab,可以得到大量的方法。

  •  ++

        合并集合,并返回一个新的数组,新数组包含左右两个集合对象的内容。

var a = Array(2,1)
var b = Array(3,4)
var c = a ++ b
var c = a.++(b)

        结果如下:

  • ++:

        这个方法同上一个方法类似,两个加号后面多了一个冒号,但是返回数组类型与冒号右侧数组相同。

 val a = List(1,2)val b = scala.collection.mutable.LinkedList(3,4)val c = a ++: bval c = a.++:(b)

        运行结果如下:

  • +:

        在数组前面添加一个元素,并返回新的对象,下面添加一个元素。

var a = Array(1,2)
var b = 0 +: a

        运行结果如下:

  • :+

        同上面的方法想法,在数组末尾添加一个元素,并返回新对象。

  • /:

     对数组中所有的元素进行相同的操作 ,foldLeft的简写。

    var a = Array(2,3,4,5)
    var b = (1/:a)(_+_)
    //运算顺序为1+2+3+4+5

    运行结果如下:

  • :\

        foldRight的简写,这里从右往左进行运算。

var a = Array(2,3,4,5)
var b = (a /:1)(_-_)
//运算顺序为1-2-3-4-5
var b = (a :\1))(_-_)
//运算顺序为1-(2-(3-(4-(5-1)))))

        运行结果如下:

  • addString

        将数组中的元素逐个添加到b中,并转换为字符串。

var a = List(1,1,2,4)
var b = new StringBulider()
var c = a.addString(b)
//c的内容为 1124
var c = a.addString(b)
//c的内容为 11241124

        运行结果如下: 

         其他:

    val a = List(1,2,3,4)val b = new StringBuilder()val c = a.addString(b,",") println("c:  "+c)  // c:  1,2,3,4val a = List(1,2,3,4)val b = new StringBuilder()val c = a.addString(b,"{",",","}") println("c:  "+c)  // c:  {1,2,3,4}
  • aggregate

        聚合计算,aggregate是柯里化方法,参数是两个方法,为了方便理解,我们把aggregate的两个参数,分别封装成两个方法,并把计算过程打印出来。

def main(args: Array[String]) {val a = List(1,2,3,4)val c = a.par.aggregate(5)(seqno,combine)println("c:"+c)}def seqno(m:Int,n:Int): Int ={val s = "seq_exp=%d+%d"println(s.format(m,n))return m+n}def combine(m:Int,n:Int): Int ={val s = "com_exp=%d+%d"println(s.format(m,n))return m+n}/**seq_exp=5+3seq_exp=5+2seq_exp=5+4seq_exp=5+1com_exp=6+7com_exp=8+9com_exp=13+17c:30*/
  • apply

        取出指定索引处的元素

var b = a.apply(0)
var b = a(0)

        运行结果如下: 

  • canEqual

        判断两个对象是否可以进行比较

  • charAt

        获取index索引处的字符,这个方法会执行一个隐式的转换,将Array[T]转换为 ArrayCharSequence,只有当T为char类型时,这个转换才会发生。

var c = Array('c','b','a')
var cc = c.charAt(0)

        运行结果如下:

  • clone

        创建一个数组的副本

        运行结果如下

 

  • collect

        通过执行一个并行计算(偏函数),得到一个新的数组对象

 val chars = Array('a','b','c')val newchars = chars.collect(fun)println("newchars:"+newchars.mkString(","))//我们通过下面的偏函数,把chars数组的小写a转换为大写的Aval fun:PartialFunction[Char,Char] = {case 'a' => 'A'case x => x}/**输出结果是 newchars:A,b,c */

        运行结果如下:

  • collectFirst

        在序列中查找第一个符合偏函数定义的元素,并执行偏函数计算

//这里继续运用上一个偏函数val chars = Array('a','b','c','a')val newchars = chars.collect(fun)val fun:PartialFunction[Char,Char] = {case 'a' => 'A'case x => x}val b = chars.collectFirst(fun)

        运行结果如下

  • combinations

        排列组合,这个排列组合会选出所有包含字符不一样的组合,对于 “abc”、“cba”,只选择一个,参数n表示序列长度,就是几个字符为一组。

    val arr = Array("a","b","c")val newarr = arr.combinations(2)newarr.foreach((item) => println(item.mkString(",")))

         运行结果如下:

  •  contains

        序列中是否包含指定对象

  • containsSlice

        判断当前序列中是否包含另一个序列

  • copyToArray

        拷贝数组中的元素

         此外,还有两种用法:    

  • corresponds

        判断两个序列长度以及对应位置元素是否符合某个条件。如果两个序列具有相同的元素数量并且p(x, y)=true,返回结果为true 。注意,如果长度不同,始终返回false

        下面代码检查a和b长度是否相等,并且a中元素是否小于b中对应位置的元素

  • count

        统计符合条件的元素个数,下面统计大于 2 的元素个数。

相关内容

热门资讯

结构性行情或延续,券商建议6月... 经历5月冲高回落后,A股6月行情即将拉开帷幕。展望后市表现,当前机构多数持相对谨慎态度,认为市场短期...
马斯克卸任DOGE后旗下公司迎... 马斯克重返其商业帝国、远离政治后,其旗下公司迅速开启一系列融资,包括xAI正在启动一项3亿美元的股份...
媒体称美国秘密提案允许低浓缩铀... 媒体报道,美国对伊核谈判政策出现180度转变,美国政府上周六向伊朗提出一份新的核协议提案,其中允许伊...
一笔漂亮的退出:93亿卖始祖鸟... (图片由豆包AI生成) 消费赛道又一明星公司被减持了。5月29日,据彭博社消息,始祖鸟母公司亚玛芬体...
速腾聚创一季度毛利同比增七成 ...   速腾聚创第二代灵巧手Papert 2.0。  5月30日,速腾聚创发布2025年第一季度财报。据...
“消费+科技”双轮驱动,港股市... 港股IPO市场正经历显著回暖,优质资产供给逐步改善,市场流动性增强,吸引了大量资金关注。Wind资讯...
从一面之恩到千亿帝国CEO,安... 近日,吉利汽车管理层大调整引发行业聚焦。在吉利一季度财报发布的当天,吉利控股集团宣布重大人事调整:极...
A股公司密集更名折射四大现象 ... 据不完全统计,2025年以来,超60家A股公司完成或启动名称变更工作,其中超30家公司涉及证券简称调...
券商6月“金股”出炉,两大行业... A股6月开市在即,券商6月月度“金股”近期陆续出炉。Wind数据显示,截至6月2日中国证券报记者发稿...
朴朴永辉福州“停火” 永辉和朴... 交流朴朴永辉,实名添加微信lihua759321进群在福州前置仓生鲜到家市场,过往的两大主力玩家、总...
美股下跌,钢铁股大涨!金价重回... 6月2日,美国三大股指开盘走低,截至22:40发稿,道指跌0.5%,标普500指数跌0.25%,纳斯...
这个账单,决定后半辈子幸福… ... 图:Hiroki Kawanabe 第一波延迟退休的人出来了。 挺多人晒出来的退休年龄数字,已经有零...
立案调查完毕,香港老板无罪,被... 字越少,事越大,相反,说得越热闹的,往往没啥事儿。84天前,上市公司万辰集团老板王健坤被国家某监委带...
靠卖丸子年入百亿,拿下10万家... 订阅 快刀财经 ▲ 做您的私人商学院一粒鱼丸的逆袭史。作者:朱末来源:快刀财经(ID:kuaidao...
港股数字货币板块集体大涨:连连... 6月2日,港股数字货币板块集体大涨。具体来看,连连数字(02598.HK)一度涨超79%,移卡(09...
“近视神药”跌下神坛,“眼药大... “近视神药”能成为百亿大药吗??作者 | 赵普编辑丨高岩来源 | 野马财经在眼药领域,尤其是备受瞩目...
这届高考,仍是史上最难 史上最... 作者 |暴雨再过几天,我们会迎来历史上最难的一届高考。你可能会反驳,1335万名考生,比去年少了7万...
A股“618”来袭!5月“稳稳... 5月份涨幅排名靠前个股本报(chinatimes.net.cn)记者王兆寰 北京报道5月的A股走出了...
“价格战”影响多大?理想汽车单... 短短两年时间内,不断推迟公布财报披露时间,单车平均净利润不断下滑,理想汽车(02015.HK)给到投...
刚刚,杀出一个医药大白马,挑战... 重重挑战激发无限动力!集采、竞争,仿佛是医药企业头顶的两座大山。连恒瑞医药、华东医药都不免因此出现短...