scala函数大全

scala 数组函数大全

  • 数组简介

1、数组的长度是不允许改变的,元素是可以改变的

2、var arr:Array[T]=new Array[T](capacity)  //声明数组

3、var arr:Array[T]=Array(T V1,T v2...)   //值已知
      var arr:Array[Int]=Array.range(begin,end,step)

4、arr.foreach(println)  //数组遍历

  • 创建数组

在 window DOS 窗口,输入 scala 进入scala命令行

定义数组:val a1= Array.range(1,4)    val a2=Array("a","b","c")

    1.新增

++union+::+
clonecopyToArraycopyToBuffer 

  

 

 

方法++  等同于 union

描述: 合并两个序列,若序列类型不同以左边序列类型为主;若泛型类型不同以两个序列共同的最小父类为结果类型;

scala> a1++a2
res0: Array[Any] = Array(1, 2, 3, a, b, c)

scala> a1.union(a2)
res1: Array[Any] = Array(1, 2, 3, a, b, c)

方法: +: 
描述:在数组前面添加一个元素,结果泛型类型取元素类型和数组类型的共同最小父类

scala> 4+:a1
res2: Array[Int] = Array(4, 1, 2, 3)

方法:  :+ 
描述: 在数组后面添加一个元素(添加的元素在后,就在数组尾部添加冒号要离数组近);和 +: 相反
示例

scala> a1:+5
res4: Array[Int] = Array(1, 2, 3, 5)

方法copyToArray
描述: 将集合中的元素从0开始,拷贝到参数1数组从startPos开始长度为len数组中
示例

scala> var a3=Array.range(1,5)
a3: Array[Int] = Array(1, 2, 3, 4)

scala> var a4=Array.range(5,8)
a4: Array[Int] = Array(5, 6, 7)

scala> a4.copyToArray(a3,0,2)

scala> a3
res6: Array[Int] = Array(5, 6, 3, 4)

方法copyToBuffer
描述: 将集合中的所有元素拷贝至参数buffer中
示例

scala> import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.ArrayBuffer

scala> var builder = new ArrayBuffer[Int]()
builder: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()

scala> a3.copyToBuffer(builder)

scala> builder
res8: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(5, 6, 3, 4)

 

   2.空/长度

isEmpty nonEmptyhasDefiniteSizelength
sizelengthCompareprefixLengthsegmentLength

 

 

 

方法: isEmpty
描述: 判断序列是否为空
示例

scala> a1.isEmpty
res9: Boolean = false

方法nonEmpty
描述:判断序列是否不为空

scala> a1.nonEmpty
rES10: Boolean = true

方法:hasDefiniteSize
描述: 检测序列是否存在有限的长度,对应 Stream 类型的流数据则返回 false
示例

scala> a1.hasDefiniteSize
res11: Boolean = true
scala> a1.toStream.hasDefiniteSize
res13: Boolean = false

方法length  等同于 size
描述:  返回序列元素个数
示例

scala> a1.length
res14: Int = 3
scala> a1.size
res17: Int = 3

方法lengthCompare
描述: 比较序列的长度和参数 len,返回序列的长度 - len
示例

scala> a1.lengthCompare(5)
res16: Int = -2

方法prefixLength
描述:  返回序列中满足条件的元素数量,如果一个元素就不满足返回0,到第一个不满足条件的元素为止
示例

scala> a1.prefixLength(_>1)
res18: Int = 0

scala> a1.prefixLength(_<2)
res19: Int = 1

方法segmentLength
描述:返回一个从fromIndex开始连续满足参数1条件的元素数量
示例

scala> var a5 = Array(0,1,3,10,15,21)
a5: Array[Int] = Array(0, 1, 3, 10, 15, 21)

scala> a5.segmentLength(_<15,2)
res20: Int = 2

   3.索引

 

indicesisDefineAtindexOfindexOfSlice
indexWherelastIndexOflastIndexOfSlicelastIndexWhere

 

 

 

方法:indices
描述:  返回当前序列索引集合
示例

scala> a1.indices
res21: scala.collection.immutable.Range = Range 0 until 3

方法isDefineAt
描述: 判断序列中是否存在指定索引
示例

scala> a1.isDefinedAt(2)
res23: Boolean = true
scala> a1.isDefinedAt(5)
res24: Boolean = false

方法:indexOf
描述:返回元素 elem 在序列中第一次出现的索引,也可以指定索引 (包括)from从左向右开始查找,找不到返回-1;
示例

scala> a1.indexOf(2)
res26: Int = 1
scala> a1.indexOf(4)
res27: Int = -1
scala> a1.indexOf(2,1)
res29: Int = 1

方法:indexOfSlice
描述:检测当前序列中是否包含序列 that,并返回第一次出现该序列的索引
示例

scala> val b = Array(2, 3)
b: Array[Int] = Array(2, 3)

scala> a1.indexOfSlice(b)
res33: Int = 1

方法:indexWhere
描述:返回当前序列中一个满足条件 p 的元素的索引,可以指定从索引 from 开始查找
示例

scala> val a = Array(1, 2, 3, 4)
a: Array[Int] = Array(1, 2, 3, 4)

scala> a.indexWhere(_>2)
res40: Int = 2

scala> a.indexWhere(_>2,3)
res41: Int = 3

方法:lastIndexOf
描述:返回元素 elem 在序列中最后一次出现的索引
示例

scala> val a = Array(1, 3, 2, 3, 4)
a: Array[Int] = Array(1, 3, 2, 3, 4)

scala> a.lastIndexOf(3)
res42: Int = 3

方法:lastIndexOfSlice
描述: 检测当前序列中是否包含序列 that,并返回最后一次出现该序列的索引
示例

scala> val a = Array(1, 2, 3, 2, 3, 4)
a: Array[Int] = Array(1, 2, 3, 2, 3, 4)

scala> val b = Array(2, 3)
b: Array[Int] = Array(2, 3)

scala> a.lastIndexOfSlice(b)
res43: Int = 3

方法:lastIndexWhere
描述: 返回当前序列中最后一个满足条件 p 的元素的索引
示例

val a = Array(1, 2, 3, 2, 3, 4)
scala> a.lastIndexWhere(_>2)
res45: Int = 5

   4.提取

applyapplyOrElsecharatfind
headtailtailslast
initinitsheadOptionlastOption

 

 

 

 

方法:apply
描述: 按下标取数组数据
示例

scala> a1
res47: Array[Int] = Array(1, 2, 3)

scala> a1.apply(1)
res48: Int = 2

方法:applyOrElse
描述: applyOrElse(index,{item:Int=>default value}),根据下标取数组元素,如果越界,则返回认值,第二个参数为函数
示例

scala> a1.applyOrElse(0,{i:Int=>None})
res52: Any = 1

scala> a1.applyOrElse(5,{i:Int=>None})
res53: Any = None

方法:charat
描述: 根据索引取字符,只能是字符数组
示例

scala> var a4 = Array('a','d','g')
a4: Array[Char] = Array(a, d, g)

scala> a4.charat(1)
res54: Char = d

方法:head
描述: 返回序列的第一个元素,如果序列为空会报错
示例

scala> a1.head
res55: Int = 1

方法:headOption
描述: 返回序列的第一个元素的 Option 类型对象,就是scala.some 或者 None,如果序列为空,则返回 None
示例

scala> a1.headOption
res57: Option[Int] = Some(1)

scala> var lst:Array[Int]=Array()
lst: Array[Int] = Array()

scala> lst.headOption
res58: Option[Int] = None

方法:tail
描述:  返回当前序列中不包含第一个元素的序列
示例

scala> a1.tail
res59: Array[Int] = Array(2, 3)

方法:tails
描述: 对序列进行tail迭代
示例

scala> a1.inits.foreach(x=>{x.foreach(print);println})
123
12
1

方法:last
描述: 返回序列的最后一个元素,如果序列为空,将引发错误
示例

scala> a1.last
res63: Int = 3

方法:lastOption
描述:  返回序列的最后一个元素的 Option 类型对象,如果序列为空,则返回 None
示例

scala> a1.lastOption
res64: Option[Int] = Some(3)

scala> lst.lastOption
res66: Option[Int] = None

方法:init
描述:  返回当前序列中不包含最后一个元素的序列
示例

scala> a1.init
res67: Array[Int] = Array(1, 2)

方法:inits
描述: 对集合中的元素进行 init 迭代操作,该操作的返回值中, 一个值是当前序列的副本,最后一个值为空
示例

scala> a1.inits.foreach(x=>{x.foreach(print);println})
123
12
1

方法:find
描述: 查找第一个满足条件的元素
示例

scala> a1.find(_>1)
res69: Option[Int] = Some(2)

 5.删除、过滤

dropdropRightdropWhile
filterwithFilterfilterNot

 

 

 

方法:drop
描述: 删除数组左边的n个元素
示例

scala> a1.drop(2)
res70: Array[Int] = Array(3)

方法:dropRight
描述: 删除数组右边的n个元素
示例

scala> a1.dropRight(1)
res73: Array[Int] = Array(1, 2)

scala> a1.dropRight(4)
res74: Array[Int] = Array()

方法:dropWhile
描述: 删除数组中符合条件的元素,若第一个元素就不符合条件,则不删除,从第一个符合条件的开始删除,到第一个不符合条件的结束
示例

scala> a1.dropWhile(_%2==0)
res77: Array[Int] = Array(1, 2, 3)

scala> a1.dropWhile(_%2==1)
res78: Array[Int] = Array(2, 3)

方法:filter
描述: 保留满足条件的元素
示例

scala> a1.filter(_>2)
res79: Array[Int] = Array(3)

scala> a1.filter(_%2==0)
res80: Array[Int] = Array(2)

方法:withFilter
描述: 保留满足条件的元素
示例

scala> a1.withFilter(_%2==0).map(x=>x)
res83: Array[Int] = Array(2)

scala> a1.withFilter(_%2==1).map(x=>x)
res84: Array[Int] = Array(1, 3)

方法:filterNot
描述: 移除满足条件的元素
示例


scala> val a = Array(1, 2, 3, 4, 0)
a: Array[Int] = Array(1, 2, 3, 4, 0)

scala> a.filterNot(x => x > 2)
res85: Array[Int] = Array(1, 2, 0)

 6.包含

containscontainsSlicestartsWithendsWith
collectcollectFirstforallexists

 

 

 

方法:contains
描述: 判断序列中是否包含指定对象
示例

scala> a1.contains(2)
res86: Boolean = true

方法:containsSlice
描述: 判断当前序列中是否包含另一个序列
示例

scala> a1.containsSlice(Array(1,2))
res87: Boolean = true

scala> a1.containsSlice(Array(1,3))
res88: Boolean = false

方法:startsWith
描述: 当前序列是否以参数序列开始
示例

scala> a1.startsWith(Array(1,2))
res90: Boolean = true

方法:endsWith
描述:当前序列是否以参数序列结尾
示例

scala> a1.endsWith(Array(3,4))
res91: Boolean = false

scala> a1.endsWith(Array(3))
res92: Boolean = true

scala> a1.endsWith(Array(2,3))
res93: Boolean = true

方法:collect
描述: 输入参数类型为偏函数,对序列中的元素进行转换
示例

scala> a1.collect({case i if i%2==1 =>2*i})
res96: Array[Int] = Array(2, 6)

方法:collectFirst
描述:查找序列中第一个符合偏函数的元素  返回Option类型
示例

scala> a1.collectFirst({case i if i%2==0 =>i})
res97: Option[Int] = Some(2)

方法:forall
描述:集合中的元素是否都满足条件
示例

scala> val a = Array(1, 2, 3, 4)
a: Array[Int] = Array(1, 2, 3, 4)

scala> a.forall(x => x > 0)
res98: Boolean = true

scala> a.forall(x => x > 2)
res99: Boolean = false

方法:exists
描述: 判断当前数组是否包含符合条件的元素
示例

scala> a1.exists(x=>x==3)
rES100: Boolean = true

 7.比较

canEqualsameElementscorresponds

 

 

方法:canEqual
描述: 两个集合之间是否可以比较,集合中都可以比但equals比较地址
示例

scala> a1.canEqual(a2)
rES101: Boolean = true

方法:sameElements
描述: 两个序列是否值相同,长度相同,同一索引下的值相同
示例

scala> val a = Array(1, 2, 3, 4)
a: Array[Int] = Array(1, 2, 3, 4)

scala> val b = Array(1, 2, 3, 4)
b: Array[Int] = Array(1, 2, 3, 4)

scala> val c = Array(1, 3, 2, 4)
c: Array[Int] = Array(1, 3, 2, 4)

scala> a.sameElements(b)
rES102: Boolean = true

scala> a.sameElements(c)
rES103: Boolean = false

方法:corresponds
描述: a1和a2长度相同,同一位置的元素必须符合条件
示例

scala> a.corresponds(b)(_==_)
rES104: Boolean = true

 

 8.遍历

foreachiteratorisTraversableAgainrepr

 

 

方法:foreach
描述: 遍历输出
示例

scala> a.foreach(x => println(x * 10))
10
20
30
40

方法:iterator
描述: 获得集合迭代器
示例

scala> a
res110: Array[Int] = Array(1, 2, 3, 4)

scala> a.iterator
res111: Iterator[Int] = <iterator>

scala> a.iterator.next
res112: Int = 1

方法:isTraversableAgain
描述: 是否可以重复遍历
示例

scala> a.isTraversableAgain
res113: Boolean = true

scala> a.iterator.isTraversableAgain
res114: Boolean = false

方法:repr
描述:将对象转化为供解释器读取的形式
示例

scala> a.repr
res115: Array[Int] = Array(1, 2, 3, 4)

9.排序、排列、反转、转置

combinationspermutationstranspose
sortedsortWithsortBy
reversereverseIteratorreverseMap
                方法:combinations
描述:排列组合,不考虑顺序,n任意选择集合中n个集合组合
示例
scala> a2.combinations(2).foreach(x=>{x.foreach(print);println()})
ab
ac
bc
  方法:permutations
描述:所有元素不同不同顺序的排列
示例
scala> a2.permutations.foreach(x=>{x.foreach(print);println()})
abc
acb
bac
bca
cab
cba

方法:transpose
描述:矩阵转置
示例

scala> var a = Array(Array(1,2),Array(3,4))
a: Array[Array[Int]] = Array(Array(1, 2), Array(3, 4))

scala> a.transpose
res120: Array[Array[Int]] = Array(Array(1, 3), Array(2, 4))

10.拼接、替换

addStringmkStringstringPrefixpatch
padToupdateupdated 

 

 

 

11.数学

maxmaxByminminByproduct
sumdiffintersectdistinctcount

 

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...