Scala中Array算子总结
提取元素 23 个
arr.foreach(f:t => Unit)
val head: Int = arr.head
val last: Int = arr.last
val head: Option[T] = arr.headOption
val last: Option[T] = arr.lastOption
val v:T = arr(index)
val v:T = arr.apply(index)
val v:T = arr.applyOrElse(5, (ix: Int) => ix)
val arr:Array[T] = arr.take(size:Int)
val arr:Array[T] = arr.takeRight(size:Int)
val arr:Array[T] = arr.takeWhile(f:T=>Boolen)
val arr:Array[T] = arr.filter(f:T=>Boolen)
val arr:Array[T] = arr.filterNot(f:T=>Boolen)
val arr: Array[T] = arr.collect(pf)
arr.collect({case x if(x%2==1) =>x}).foreach(println)
val arr: Option[T] = arr.collectFirst({ case x if (x % 2 == 1) => x })
val arr: Option[T] = arr.find(f:T=>Boolen)
val arr: Array[T] = arr.slice(from:Int,until:Int)
val arr: Array[Int] = arr1.init
val arr: Iterator[Array[Int]] = arr1.inits
val arr: Array[Int] = arr1.tail
val arr: Iterator[Array[Int]] = arr1.tails
val lift: Int => Option[Int] = arr.lift
val pf: PartialFunction[T,B] = arr.orElse(f:PartialFunction[T,B])
修改操作 12个
Unit返回空值 arr.update(index,value)
val newArr: Array[T] = arr.updated(index:Int,newV:T)
val newArr: Array[Int] = arr1 ++|union arr2
val newArr: Array[Int] = arr1.intersect(arr2)
val newArr: Array[Int] = arr1.diff(arr2)
val newArr: Array[Int] = 1 +: arr1
val newArr: Array[Int] = arr1 :+ 1
val newArr: Array[Int] = arr1 ++: arr2
val newArr: Array[Int] = arr1.drop(n:Int)
val newArr: Array[Int] = arr1.dropRight(n:Int)
val newArr: Array[Int] = arr1.dropWhile(f:Int=>Boolen)
val newArr =arr.patch(from:Int,sub:GenSeq,replaceLen:Int)
逐个迭代处理 5个
val tarr:Array[T] = arr.map(f:T=>B)
val tarr:Array[T] = arr.transform(f:T=>B)
val tarr:Array[T] = arr.reverseMap(f:T=>B)
val tarr:Array[T] = darr.flatten
val tarr:Array[T] = darr.flatMap(f:T=>T)
分组 5个
val parr:ParArray[T] = arr.par
var tuple:(Array[T],Array[T]) = arr.partition(f:T => Boolean)
var iter:Iterator[Array[T]] = arr.grouped(size:Int)
例子: val iterator: Iterator[Array[Int]] = arr3.grouped(3)
iterator.foreach(arr =>{
arr.foreach(x=>print({s"${x}\t"}))
println()
})
var iter:Iterator[Array[T]] = arr.sliding(size:Int[,step:Int 默认1])
var map:Map[K,Array(T)] = arr.groupBy(key:K)
聚合 17个
val value:B = arr.reduce(f:(T,T)=>B)
val value:B = arr.reduceLeft(f:(T,T)=>B)
val value:B = arr.reduceLeftOption(f:(T,T)=>B)
val value:B = arr.reduceRight(f:(T,T)=>B)
val value:B = arr.reduceRightOption(f:(T,T)=>B)
val value:B = arr.foldleft(initVal:T)(f:(T,T)=>B)
val value:B = arr.foldRight(initVal:T)(f:(T,T)=>B)
val value:Array[B] = arr.scan(initiVal:T)(f:(T,T)=>B)
val value:Array[B] = arr.scanLeft(initiVal:T)(f:(T,T)=>B)
val value:Array[B] = arr.scanRight(initiVal:T)(f:(T,T)=>B)
val value:B = arr.par.aggregate(initV:B)(map:(T,T)=>B,reduce:(B,B)=>B)
val value:T = arr.sum
val value:Int = arr.count(f:T => Boolean)
val value:T = arr.min
val value:T = arr.max
val value:T = arr.minBy(_.?)
val value:T = arr.maxBy(_.?)
验证 10个
val bool: Boolean = arr1.isEmpty
val bool: Boolean = arr1.nonEmpty
val bool: Boolean = arr1.exists((p: Int) => Boolean)
val bool: Boolean = arr1.contains(x:T)
val bool: Boolean = arr1.containsSlice(Array(2, 3))
val bool: Boolean = arr1.forall((p: Int) =>Boolean)
val bool: Boolean = arr1.corresponds(sub:GenSeq)(p: Int) =>Boolean)
val bool: Boolean = arr1.sameElements(Array(1, 2, 3, 5, 3))
val bool: Boolean = arr1.startsWith(Array(1, 2, 3))
val bool: Boolean = arr1.endsWith(Array(3))
大小 4个
val len:Int = arr.size = arr.length
val len:Int = arr.prefixLength((f: T) =>Boolean)
val len:Int = arr.segmentLength((f:T) =>Boolean,pos:Int)
val len:Int = arr.lengthCompare(x:Int)
转变 26个
val buffer: mutable.Buffer[T] = arr.toBuffer
val arr:Array[T] = arr.toArray
val buf:mutable.Buffer[Int] = mutable.Buffer()
val unit: Unit = arr.copyToBuffer(buf)
val unit: Unit = arr.copyToArray(copy:Array[T])
val unit1: Unit = arr.copyToArray(copy:Array[T], 1)
val unit1: Unit = arr.copyToArray(copy:Array[T], 1,5)
val arr:Array[T] = arr.clone
val arr: Array[T] = arr.array
val arr: IndexedSeq[T] = arr.deep
val arr: mutable.WrappedArray[T] = arr.repr
val arr: mutable.IndexedSeq[T] = arr.seq
val map:Map[K,V] =arr.toMap
val set: Set[T] = arr1.toSet
val ita: Iterator[T] = arr1.toIterator
val ita: Iterable[T] = arr1.toIterable
val stream: Stream[T] = arr1.toStream
val arr: Array[T] = arr.padTo(len:Int,elem:T)
val tp2: (Array[T],Array[T]) = arr.span(f:T => Boolean)
val tp2: (Array[T],Array[T]) = arr.splitAt(index:Int)
val arr2d2: Array[Array[T]] = arr2d1.transpose
val arr: Array((T,B)) = arr1[T].zip(arr2[B])
val arr: Array((T,B)) = arr1[T].zipAll(arr2[B],thisElem:T,thatElem:B)
val tp2:Tuple(Array[T],Array[T]) = arr[Array[Tuple2]].unzip
val tp3:Tuple(Array[T],Array[T],Array[T]) = arr[Array[Tuple3]].unzip3
val tp2:Array((T,Int)) = arr.zipWithIndex
排序 5个
val arr: Array[T] = arr.reverse
val arr; Iterator[T] = arr.reverIterator
val arr: Array[T] = arr.sorted
val arr: Array[T] = arr.sortBy
val arr: Array[T] = arr.sortWith(f:(T1,T2)=>Boolean)
字符串拼接 4个
val builder = new StringBuilder
val str1: StringBuilder = arr1.addString(builder)
val str2: StringBuilder = arr1.addString(builder,",")
val str3: StringBuilder = arr1.addString(builder,"{",",","}")
val string: String = arr1.mkString
val str: String = arr1.mkString(",")
val str1: String = arr1.mkString("{", ",", "}")
根据值取下标 7个
val ix:InT = arr.indexOf(v:T[,start:Int])
val ix:InT = arr.indexOfSlice(arr:GenSeq[,start:Int])
val ix:InT = arr.indexOfWhere(f:T=>Boolean[,start:Int])
val ix:InT = arr.lastIndexOf(v:T[,start:Int])
val ix:InT = arr.lastIndexOfSlice(arr:GenSeq[,start:Int])
val ix:InT = arr.lastIndexOfWhere(f:T=>Boolean[,start:Int])
val ixs:Array[Int] = arr.indices
oop 4个
val f4 = f1 andThen(f2) andThen f3
val f5 = f1 compose f2 compose f3
abstract class Father
case class Son() extends Father
case class Son2() extends Father
val f1:Father = Son()2
if(f1.isInstanceof[Son]){
val s1:Son = f1.asInstanceOf[Son]
}else{
println("类型不一致")
}