Scala:Array方法

  • 一、Scala中Array数组
    • 1.定义
    • 2.语法格式
  • 二、Scala:Array的集合操作
    • 1. ++ ++:
      • 1.1 ++
      • 1.2 ++:
    • 2. +: :+
      • 2.1 +:
      • 2.2 :+
    • 3. /: :\
      • 3.1 /:
      • 3.2 :\
    • 4. addString
      • 4.1 addString(b: StringBuilder)
      • 4.2 addString(b: StringBuilder, sep: String)
      • 4.3 addString(b: StringBuilder, start: String, sep: String, end: String)
    • 5. aggregate
    • 6. andThen compose
      • 6.1 andThen
      • 6.2 compose
      • 对比测试
    • 7. apply
      • 7.1 apply
      • 7.2 applyOrElse
    • 8. array
    • 9. canEqual
    • 10. charAt
    • 11. clone(浅克隆)
    • 12. collect collectFirst
      • 12.1 collect
      • 12.2 collectFirst
    • 13. combinations
    • 14. companion(伴生对象)
    • 15. contains containsSlice
      • 15.1 contains
      • 15.2 containsSlice
    • 16. copy
      • 16.1 copyToArray
      • 16.2 copyToBuffer
    • 17. corresponds
    • 18. count
    • 18. deep
    • 19. diff
    • 20. distinct
    • 21. drop
      • 21.1 drop(n: Int)
      • 21.2 dropRight(n: Int)
      • 21.3 dropWhile(p: (T) ⇒ Boolean)
    • 22. elemMainfest
    • 23. elemTag
    • 24. endsWith
    • 25. exists
    • 26. filter filterNot
      • 26.1 filter
      • 26.2 filterNot
    • 27. find
    • 28. flatMap flatten
      • 28.1 flatMap
      • 27.2 flatten
    • 29. fold
      • 29.1 fold
      • 29.2 foldLeft
      • 29.3 foldRight
    • 30. forall foreach
      • 30.1 forall
      • 30.2 foreach
    • 31. genericBuilder
    • 32. groupBy grouped
      • 32.1 groupBy
      • 32.2 grouped
    • 33. hasDefiniteSize
    • 34. head headOption
      • 34.1 head
      • 34.2 headOption
    • 35. indexOf
      • 35.1 indexOf(elem: T)
      • 35.2 indexOf(elem: T, from: Int)
      • 35.3 indexOfSlice
      • 35.4 indexWhere
    • 36. indices
    • 37. init inits
      • 37.1 init
      • 37.2 inits
    • 38. intersect
    • 39. isDefinedAt
    • 40. isEmpty
    • 41. isTraversableAgain
    • 42. iterator
    • 43. last
      • 43.1 last
      • 43.2 lastIndexOf
      • 43.3 lastIndexOfSlice
      • 43.4 lastIndexWhere
      • 44. lastOption
    • 45. length lengthCompare
      • 45.1 length
      • 45.2 lengthCompare
    • 46. lift
    • 47. map
    • 48. max min
      • 48.1 max
      • 48.2 maxBy
      • 48.3 min
      • 48.4 minBy
    • 49. mkString
      • 49.1 mkString
      • 49.2 mkString(sep: String)
      • 49.3 mkString(start: String, sep: String, end: String)
    • 50. nonEmpty
    • 51. orElse
    • 52. padTo
    • 53. par
    • 54. partition
    • 55. patch
    • 56. permutations
    • 57. prefixLength
    • 58. product
    • 59. reduce
      • 59.1 reduce
      • 59.2 reduceLeft
      • 59.3 reduceRight
      • 59.4 reduceLeftOption
      • 59.5 reduceRightOption
    • 60. repr
    • 61. reverse
      • 61.1 reverse
      • 61.2 reverseIterator
      • 61.3 reverseMap
    • 62. runWith
    • 63. sameElements
    • 64. scan
      • 64.1 scan
      • 64.2 scanLeft
      • 64.3 scanRight
    • 65. segmentLength
    • 66. seq
    • 67. size
    • 68. slice
    • 69. sliding
      • 69.1 sliding(size: Int): collection.Iterator[Array[T]]
      • 69.2 sliding(size: Int, step: Int): collection.Iterator[Array[T]]
    • 70. sortBy sortWith sorted
      • 70.1 sortBy
      • 70.2 sortWith
      • 70.3 sorted
    • 71. span
    • 72. splitAt
    • 73. startsWith
    • 74. stringPrefix
    • 75. subSequence
    • 76. sum
    • 77. tail tails
    • 77.1 tail
    • 77.2 tails
    • 78. take
      • 78.1 take
      • 78.2 takeRight
      • 78.3 takeWhile
    • 79. to
      • 79.1 toArray
      • 79.2 toBuffer
      • 79.3 toIndexedSeq
      • 79.4 toIterable
      • 79.5 toIterator
      • 79.6 toList
      • 79.7 toMap
      • 79.8 toSeq
      • 79.9 toSet
      • 79.10 toStream
      • 79.11 toVector
      • 79.12 toTraversable
    • 80. transform
    • 81. transpose
    • 82. union
    • 83. unzip unzip3
      • 83.1 unzip
      • 83.2 unzip3
    • 84. update
    • 85. view
    • 86. withFilter
    • 87. zip zipAll zipWithIndex
      • 87.1 zip
      • 87.2 zipAll
      • 87.3 zipWithIndex

一、Scala中Array数组

1.定义

定义:数组是一种可变的、可索引的数据集合。

2.语法格式

语法格式:Scala中用Array[T]的形式来表示Java中的数组形式 T[]

val numbers = Array(1, 2, 3, 4) //声明一个数组对象
val first = numbers(0) // 读取第一个元素
numbers(3) = 100 // 替换第四个元素为100
val biggerNumbers = numbers.map(_ * 2) // 所有元素乘2

二、Scala:Array的集合操作

1. ++ ++:

1.1 ++

语法:def ++[B](that: GenTraversableOnce[B]): Array[B]
注解:合并集合,并返回一个新的数组,新数组包含左右两个集合对象的内容。

 val a = Array(1,2)val b = Array(3,4)val c = a ++ bc	//结果:Array[Int] = Array(1, 2, 3, 4)val b = Array("c","d")val c = a ++ b		//c: Array[Any] = Array(1, 2, c, d)

1.2 ++:

语法:def ++:[B >: A, That](that: collection.Traversable[B])(implicit bf: CanBuildFrom[Array[T], B, That]): That
注解:合并集合,并返回一个新的数组,新数组包含左右两个集合对象的内容,且右边操作数据的类型决定着返回结果的类型(不是值类型)。
例**:
下面代码中List和LinkedList结合,返回结果是LinkedList类型

val a = List(1,2)
val b = scala.collection.mutable.LinkedList(3,4)
val c = a ++: b
println(c.getClass().getName())// c的类型是:scala.collection.mutable.LinkedList

2. +: :+

2.1 +:

语法:def +:(elem: A): Array[A]
注解:在数组前面添加一个元素,并返回新的对象
例**:下面添加一个元素 0

 val a = List(1,2)val c = 0 +: a // c中的内容是 (0,1,2)

2.2 :+

语法:def :+(elem: A): Array[A]
注解:在数组末尾添加一个元素,并返回新对象

 val a = List(1,2)val c = a :+ 0 // c中的内容是 (1,2,0)

3. /: :\

3.1 /:

语法:def /:[B](z: B)(op: (B, T) ⇒ B): B
注解:对数组中所有的元素进行相同的操作 ,foldLeft的简写(左二叉树)

 val a = List(1,2,3,4)val c = (10 /: a)(_+_)   // 1+2+3+4+10val d = (10 /: a)(_*_)   // 1*2*3*4*10println("c:"+c)   // c:20println("d:"+d)   // d:240

3.2 :\

语法:def :[B](z: B)(op: (T, B) ⇒ B): B
注解:对数组中所有的元素进行相同的操作 ,foldRight的简写(右二叉树)

4. addString

4.1 addString(b: StringBuilder)

语法:def addString(b: StringBuilder): StringBuilder
注解:将数组中的元素逐个添加到b中

val a = List(1,2,3,4)
val b = new StringBuilder()
val c = a.addString(b)   // c中的内容是  1234

4.2 addString(b: StringBuilder, sep: String)

语法: def addString(b: StringBuilder, sep: String): StringBuilder
注解:将数组中的元素逐个添加到b中,但每个元素间sep分隔符分开

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

4.3 addString(b: StringBuilder, start: String, sep: String, end: String)

语法:def addString(b: StringBuilder, start: String, sep: String, end: String): StringBuilder
注解:将数组中的元素逐个添加到b中,同时在首尾各加一个字符串,并指定sep分隔符

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

5. aggregate

语法:def aggregate[B](z: ⇒ B)(seqop: (B, T) ⇒ B, combop: (B, B) ⇒ B): B
注解:聚合计算,aggregate是柯里化方法,参数是两个方法。
例**:为方便理解,我们把aggregate的两个参数,分别封装成两个方法,并把计算过程打印出来。

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
}def main(args: Array[String]) {val a = List(1,2,3,4)val c = a.par.aggregate(5)(seqno,combine)println("c:"+c)
}
/**seq_exp=5+3seq_exp=5+2seq_exp=5+4seq_exp=5+1com_exp=6+7com_exp=8+9com_exp=13+17c:30
*/def mapper(m:Int,n:Int): Int ={val s = "seq_exp=%d+%d"println(s.format(m,n))return m+n
}
def reducer(m:Int,n:Int): Int ={val s = "com_exp=%d+%d"println(s.format(m,n))return m+n
}
def main(args: Array[String]) {val a = List(1,2,3,4,5)val c = a.par.aggregate(5)(seqno,combine)println("c:"+c)
}
/**第一个方法产生的结果集个数为奇数,会产生轮空。seq_exp=5+3seq_exp=5+2seq_exp=5+5seq_exp=5+4seq_exp=5+1com_exp=6+7com_exp=8+9com_exp=13+10com_exp=23+17c:40
*/

上面过程可以简写为

val a = List(1,2,3,4,5)
val c = a.par.aggregate(5)(_+_,_+_)	//c:Int = 40
println(c)	//40

6. andThen compose

6.1 andThen

语法:def andThen[A](g: R => A): T1 => A = { x => g(apply(x)) }
注解:Composes two instances of Function1 in a new Function1, with this function applied first.
@tparam A the result type of function g
@param g a function R => A
@return a new function f such that f(x) == g(apply(x))
andThen是实现一个新的函数f(x) ==g(apply(x)),本质是构建一个新的函数先运行g再运行f

6.2 compose

语法:def compose[A](g: A => T1): A => R = { x => apply(g(x)) }
注解:Composes two instances of Function1 in a new Function1, with this function applied last.
@tparam A the type to which function g can be applied
@param g a function A => T1
@return a new function f such that `f(x) == apply(g(x))``
compose是实现一个新的函数f(x) == apply(g(x)),本质是构建一个新的函数先运行f再运行g

对比测试

/** * 传入Int,结果翻倍 */
val doubleNum :Int => Int  = {num =>val numDouble = num * 2println(s"double Num ($num * 2 = $numDouble)")numDouble
}
// doubleNum: Int => Int = <function1>/** *传入Int,结果加一 */
val addOne:Int => Int = {num=>val sumNum = num + 1println(s"add One ($num + 1 = $sumNum)")sumNum
}
addOne: Int => Int = <function1>
def myAndThen[A, B, C](g: A => B, f: B => C): A => C = x => f(g(x))
// myAndThen: [A, B, C](g: A => B, f: B => C)A => C
def myCompose[A, B, C](g: A => B, f: C => A): C => B = x => g(f(x))
// myCompose: [A, B, C](g: A => B, f: C => A)C => B

andThen
期待一个A类型转化成一个C类型,x是一个A类型,将x传给g,作为g的参数得到一个一个B类型,再将结果作为参数传给f,f在是将B类型转化为一个C类型,最终实现A类型的x转化为C类型。
compose
期待一个C类型转化为B类型,也就是是说compose则是将先执行靠里面的函数,再将结果传给外层函数,所以先执行f将C类型的x转化为一个A类型,再作为参数传给g,得到一个B类型。

val myComposeTest = myCompose[Int, Int, Int](addOne, doubleNum)	//myComposeTest: Int => Int = <function1>
myComposeTest(2)
val composeDoubleNumInAddOne = addOne compose doubleNum
val composeAddOneInDoubleNum = doubleNum compose addOne
composeDoubleNumInAddOne(2)
composeAddOneInDoubleNum(2)
assert(myComposeTest(2)==composeDoubleNumInAddOne(2))val myAndThenTest = myAndThen[Int,Int,Int](addOne,doubleNum)
myAndThenTest(2)
val addOneAndThenDoubleNum = addOne andThen doubleNum
val doubleNumAndThenAddOne = doubleNum andThen addOne
addOneAndThenDoubleNum(2)
doubleNumAndThenAddOne(2)
assert(myAndThenTest(2)==addOneAndThenDoubleNum(2))

7. apply

7.1 apply

语法: def apply(i: Int): T
注解:取出指定索引i处的元素

val a = Array(1,3,4,6)
val b = a.apply(2)
println("b=" + b)    // 结果:b=4
// 等同于
val b = numbers(2) 
println("b=" + b)    // 结果:b=4

7.2 applyOrElse

语法:def applyOrElse[A1 <: Int, B1 >: Int](x: A1,default: A1 => B1): B1
注释: 取出指定索引x处的元素,如果不存在索引x,则提供一个函数,指定默认值

val a = Array(1,3,6,2,4,8)
val b = a.applyOrElse(1,{x:Int => 9})	// b: Int = 3
val b = a.applyOrElse(6,{x:Int => 9})	// b: Int = 9val b = a.applyOrElse(6,{x:String => "a"'})	// error: type mismatch;

8. array

语法
注释:创建数组方法

9. canEqual

语法:def canEqual(that: Any): Boolean
注释:判断两个对象是否可以进行比较
注意:这个方法基本不用,因为一般都能比较

10. charAt

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

val chars = Array('a','b','c')
println("c:"+chars.charAt(0))   //结果 aval a = Array(1,3,4,6)
val d = a.charAt(0)	// 报错

11. clone(浅克隆)

语法: def clone(): Array[T]
注解:基于当前对象,创建一个副本

 val chars = Array('a','b','c')  // (a,b,c)val newchars = chars.clone()
newchars  // (a,b,c)

12. collect collectFirst

12.1 collect

语法:def collect[B](pf: PartialFunction[A, B]): Array[B]
注释:通过执行一个并行计算(偏函数),得到一个新的数组对象

val a = Array(1,2,3,4)
val func:PartialFunction[Int,Int]={
case x if x%2==0 => x+2
case x => x+1
}
a.collect(func)	// 结果:Array:Int = Array(2,4,4,6)
a.collectFirst(func)	//结果:Option[Int] = Some(4)// fun偏函数的case变式
val func:PartialFunction[Int,Int]={
case x if x%2==0 => x+2
case _ => 1
}
a.collect(func)	//结果:Array:Int = Array(1,4,1,6)# fun偏函数的case变式
val func:PartialFunction[Int,Int]={
case x if x%2==0 => x+2
}
a.collect(func)	//结果:Array:Int = Array(4,6)

12.2 collectFirst

语法:def collectFirst[B](pf: PartialFunction[T, B]): Option[B]
注解:在序列中查找第一个符合偏函数定义的元素,并执行偏函数计算

val arr = Array(1,'a',"b")
//定义一个偏函数,要求当被执行对象为Int类型时,进行乘100的操作(对于对象arr来说,只有第一个元素符合要求)
val func:PartialFunction[Any,Int] = {case x:Int => x*100
}
//计算
val v= arr.collectFirst(func)
println("value:"+v)	//结果:value:Some(100)
//另一种写法
val v = arr.collectFirst({case x:Int => x*100})
println("value:"+v)	//结果:value:Some(100)

13. combinations

语法: def combinations(n: Int): collection.Iterator[Array[T]]
注解:排列组合,这个排列组合会选出所有包含字符不一样的组合,(对于 “abc”、“cba”,只选择一个),参数n表示序列长度,即几个元素为一个组合

val arr = Array("a","b","c")
val newarr = arr.combinations(2)
newwarr.foreach(println)	//结果:3个地址值
newarr.foreach((item) => println(item.mkString(",")))
/**
结果:
a,b
a,c
b,c
*/

14. companion(伴生对象)

语法:override def companion: scala.collection.generic.GenericCompanion[scala.collection.mutable.IndexedSeq]
注解

val d = Array(1,3,3,2,4)
val f = d.companion		//f:scala.collection.generic.GenericCompanion[scala.collection.mutable.IndexedSeq] = scala.collection.mutable.IndexedSeq$@3bf7c70e
println(f)		// scala.collection.mutable.IndexedSeq$@3bf7c70e

15. contains containsSlice

15.1 contains

语法: def contains[A1 >: A](elem: A1): Boolean
注解:判断序列中是否包含指定对象(次序一致)

15.2 containsSlice

语法:def containsSlice[B](that: GenSeq[B]): Boolean
注解: [slaɪs]判断当前序列中是否包含另一个序列

val b = Array(1,2,3,Array(4,5))
val c = Array(4,5,6)
b.containsSlice(c)	// 结果:Boolean = falseval c = Array(4,5)
b.containsSlice(c)	// 结果:Boolean = false
val b = Array(1,2,3,4,5)
b.containsSlice(c)	// 结果:Boolean = true

16. copy

16.1 copyToArray

语法1**:def copyToArray(xs: Array[A]): Unit
注解1**:将元数组中的元素拷贝到新数组,默认拷贝元数组所有元素

语法2**:def copyToArray(xs: Array[A], start: Int): Unit
注解2**:将元数组中的元素拷贝到新数组,从新数组索引为start的地方开始写入,默认拷贝元数组所有元素

语法3**:def copyToArray(xs: Array[A], start: Int, len: Int): Unit
注解3**:将元数组中的元素拷贝到新数组,从新数组索引为start的地方开始写入,拷贝元数组元素长度为len

val a = Array('a', 'b', 'c')
val b : Array[Char] = new Array(5)	//结果:b: Array[Char] = Array(?, ?, ?, ?, ?)
a.copyToArray(b)    
b // 结果:res34: Array[Char] = Array(a, b, c, ?, ?)val b : Array[Char] = new Array(5)
a.copyToArray(b,1)
b // 结果:res38: Array[Char] = Array(?, a, b, c, ?)val b : Array[Char] = new Array(5)
a.copyToArray(b,1,2)
b // 结果:res43: Array[Char] = Array(?, a, b, ?, ?)

16.2 copyToBuffer

语法:def copyToBuffer[B >: A](dest: Buffer[B]): Unit
注解:将数组中的内容拷贝到Buffer中

val a = Array('a', 'b', 'c')
import scala.collection.mutable.ArrayBuffer
val b = ArrayBuffer[Char]()
// 或者  val b:ArrayBuffer[Char]  = ArrayBuffer()
a.copyToBuffer(b)
println(b.mkString(","))	//结果:a,b,c

17. corresponds

语法:def corresponds[B](that: GenSeq[B])(p: (T, B) ⇒ Boolean): Boolean
注解:[ˌkɒrəˈspɒndz];判断两个序列长度以及对应位置元素是否符合某个条件。如果两个序列具有相同的元素数量并且p(x, y)=true,返回结果为true;否则,返回false(元素数量不同,返回false)
:下面代码检查a和b长度是否相等,并且a中元素是否小于b中对应位置的元素

val a = Array(1, 2, 3)
val b = Array(4, 5,6)
println(a.corresponds(b)(_<_))  //结果:true

18. count

语法:def count(p: (T) ⇒ Boolean): Int
注解:统计符合条件的元素个数
:下面统计大于 2 的元素个数

val a = Array(1, 2, 3)
println(a.count({x:Int => x > 2}))  // Int = 1val e = Array("Hello","world","hadoop")
e.count(x=>x.contains("o"))
e.count(x=>x.indexOf("o")!= -1)	//Int = 3

18. deep

语法:def deep: IndexedSeq[Any]
注解:将提供序列转型为IndexedSeq[Any]类型,序列值类型自动提升

val a = Array(1,2,4,3)		//a: Array[Int] = Array(1, 2, 4, 3)
val b = a.deep		//b: IndexedSeq[Any] = Array(1, 2, 4, 3)
println(a)		//[I@2ac5ba7a
println(b)		//Array(1, 2, 4, 3)

19. diff

语法:def diff(that: collection.Seq[T]): Array[T]
注解:计算当前数组与另一个数组的不同。将当前数组中没有在另一个数组中出现的元素返回

val a = Array(1, 2, 3,4)
val b = Array(4, 5,6,7)
val c = a.diff(b)
println(c.mkString) //1,2,3

20. distinct

语法:def distinct: Array[T]
注解:去除当前集合中重复的元素,只保留一个

val a = Array(1, 2, 3,4,4,5,6,6)
val c = a.distinct
println(c.mkString(","))    // 1,2,3,4,5,6

21. drop

21.1 drop(n: Int)

语法:def drop(n: Int): Array[T]
注解:将当前序列中前 n 个元素去除后,作为一个新序列返回

val a = Array(1, 2, 3,4)
val c = a.drop(2)
println(c.mkString(","))    // 结果:3,4

21.2 dropRight(n: Int)

语法:def dropRight(n: Int): Array[T]
注解:将当前序列中尾部 n 个元素去除后,作为一个新序列返回

val a = Array(1, 2, 3,4)
val c = a.dropRight(2)
println(c.mkString(","))    // 结果:1,2

21.3 dropWhile(p: (T) ⇒ Boolean)

语法:def dropWhile(p: (T) ⇒ Boolean): Array[T]
注解:去除当前数组中符合条件的元素(从当前数组的第一个元素起,直到碰到第一个不满足条件的元素结束,否则返回整个数组)

//下面去除大于2的,第一个元素 3 满足,它后面的元素 2 不满足,所以返回 2,3,4
val a = Array(3, 2, 3,4)
val c = a.dropWhile( {x:Int => x > 2} )
println(c.mkString(","))  //结果: 2,3,4//如果数组 a 是下面这样,第一个元素就不满足,所以返回整个数组 1, 2, 3,4
val a = Array(1, 2, 3,4) 
val c = a.dropWhile( {x:Int => x > 2} )
println(c.mkString(","))  //结果: 1,,2,3,4

22. elemMainfest

语法:def elemManifest: ClassManifest[AI]
注解

val a = Array(1,2,3,4,5)
val b = a.elemManifest	// b:ClassManifest[Int] = Int
println(b)		// Intval a = Array(1,2,3,"a")
val b = a.elemManifest	// b: ClassManifest[Any] = java.lang.Object
println(b)		// java.lang.Object

23. elemTag

语法:def elemTag: scala.reflect.ClassTag[A1]
注解

val a = Array(1,2,3,4,5)
val b = a.elemTag	// scala.reflect.ClassTag[Int] = Int
println(b)		// Intval a = Array(1,2,3,"a")
val b = a.elemTag	// b: scala.reflect.ClassTag[Any] = Object
println(b)		// Object

24. endsWith

语法:def endsWith[B](that: GenSeq[B]): Boolean
注解:判断是否以某个序列结尾

val a = Array(3, 2, 3,4)
val b = Array(3,4)
println(a.endsWith(b))  // 结果:true

25. exists

语法:def exists(p: (T) ⇒ Boolean): Boolean
注解: 判断当前数组是否包含符合条件的元素

val a = Array(3, 2, 3,4)
println(a.exists( {x:Int => x==3} ))   //true
println(a.exists( {x:Int => x==30} ))  //false

26. filter filterNot

26.1 filter

语法:def filter(p: (T) ⇒ Boolean): Array[T]
注解:取得当前数组中符合条件的元素,组成新的数组返回

val a = Array(3, 2, 3,4)
val b = a.filter( {x:Int => x> 2} )  
// 等价val b = a.filter(x => x>2)	和	val b = a.filter(_ > 2)
println(b.mkString(","))    //3,3,4

26.2 filterNot

语法:def filterNot(p: (T) ⇒ Boolean): Array[T]
注解:取得当前数组中不符合条件的元素,组成新的数组返回

val a = Array(3, 2, 3,4)
val b = a.filterNot( {x:Int => x> 3} )
println(b.mkString(","))    //3,2,3

27. find

语法:def find(p: (T) ⇒ Boolean): Option[T]
注解:查找第一个符合条件的元素

val a = Array(1, 2, 3,4)
val b = a.find( {x:Int => x>2} )
println(b)  // 结果:Some(3)
b.get	//结果:Int=3

28. flatMap flatten

28.1 flatMap

语法:def flatMap[B](f: (A) ⇒ GenTraversableOnce[B]): Array[B]
注解: 先执行Map对当前序列的每个元素进行操作,后执行flat将map后的结果放入新序列返回,参数要求是GenTraversableOnce及其子类

val a = Array(1, 2, 3,4)
val b = a.flatMap(x=>1 to x)
println(b.mkString(","))  //结果:1,1,2,1,2,3,1,2,3,4
/**
从1开始,分别于集合a的每个元素生成一个递增序列,过程如下
1
1,2
1,2,3
1,2,3,4
*/

27.2 flatten

语法:def flatten[U](implicit asTrav: (T) ⇒ collection.Traversable[U], m: ClassTag[U]): Array[U]
注解: 将二维数组的所有元素联合在一起,形成一个一维数组返回(要求数组中元素的维度保持一致,否则报错)

val dArr = Array(Array(1,2,3),Array(4,5,6))
val c = dArr.flatten
println(c.mkString(","))    //1,2,3,4,5,6

29. fold

29.1 fold

语法:def fold[A1 >: A](z: A1)(op: (A1, A1) ⇒ A1): A1
注解:对序列中的每个元素进行二元运算
区分aggregate:fold同aggregate有类似的语义,但执行过程有所不同(aggregate需要两个处理方法)

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
}val a = Array(1, 2, 3,4)val b = a.fold(5)(seqno)/** 运算过程seq_exp=5+1seq_exp=6+2seq_exp=8+3seq_exp=11+4*/val c = a.par.aggregate(5)(seqno,combine)/** 运算过程seq_exp=5+1seq_exp=5+4seq_exp=5+3com_exp=8+9seq_exp=5+2com_exp=6+7com_exp=13+17*/

fold中,seqno是把初始值顺序和每个元素相加,把得到的结果与下一个元素进行运算
aggregate中,seqno是把初始值与每个元素相加,但结果不参与下一步运算,而是放到另一个序列中,由第二个方法combine进行处理

29.2 foldLeft

语法:def foldLeft[B](z: B)(op: (B, T) ⇒ B): B
简写方式:def /:[B](z: B)(op: (B, T) ⇒ B): B
注解:从左到右计算

def seqno(m:Int,n:Int): Int ={val s = "seq_exp=%d+%d"println(s.format(m,n))return m+n
}
val a = Array(1, 2, 3,4)val b = a.foldLeft(5)(seqno)
/** 运算过程
seq_exp=5+1
seq_exp=6+2
seq_exp=8+3
seq_exp=11+4
*/
/**
简写 (5 /: a)(_+_)
*/

29.3 foldRight

语法:def foldRight[B](z: B)(op: (B, T) ⇒ B): B
简写方式:def :[B](z: B)(op: (T, B) ⇒ B): B
注解:从右到左计算

def seqno(m:Int,n:Int): Int ={val s = "seq_exp=%d+%d"println(s.format(m,n))return m+n
}val a = Array(1, 2, 3,4)val b = a.foldRight(5)(seqno)/** 运算过程seq_exp=4+5seq_exp=3+9seq_exp=2+12seq_exp=1+14*//**简写 (a :\ 5)(_+_)*/

30. forall foreach

30.1 forall

语法:def forall(p: (T) ⇒ Boolean): Boolean
注解:检测序列中的元素是否都满足条件 p,如果序列为空,返回true

val a = Array(1, 2, 3,4)
val b = a.forall( {x:Int => x>0})   //true
val b = a.forall( {x:Int => x>2})   //false

30.2 foreach

语法:def foreach(f: (A) ⇒ Unit): Unit
注解:遍历序列中的元素,进行 f 操作

val a = Array(1, 2, 3,4)
a.foreach(x => println(x*10))
/**
10
20
30
40
*/

31. genericBuilder

语法:def genericBuilder[B]: scala.collection.mutable.Builder[B,scala.collection.mutable.IndexedSeq[B]]
注解

32. groupBy grouped

32.1 groupBy

语法:def groupBy[K](f: (T) ⇒ K): Map[K, Array[T]]
注解:按条件分组,条件由 f 匹配,返回值是Map类型,每个key对应一个序列。(条件最多23个)
:下面代码实现的是,把小于3的数字放到一组,大于3的放到一组,返回Map[String,Array[Int]]

val a = Array(1, 2, 3,4)
val b = a.groupBy( x => x match {case x if (x < 3) => "small"case _ => "big"
})
//结果:Map(small -> Array(1,2,3), big -> Array(4))//取small的值
b.apply("small")	// Array(1,2,3)
或
b.get("small")	//Some(地址值)
b.get("small").get	// Array(1,2,3)// 分组后,取分组内的值
b.apply("small").apply(0)	//结果:Int = 1// 统计单词数量
val words = Array("hello world","hello scala","spark scala")
val word = words.flatMap(x => x.split(" "))  //val word = words.flatMap(_.split(" "))
word.groupBy(x=>x).foreach(f=>println(f._1,f._2.length))
/** 结果
(spark,1)
(scala,2)
(world,1)
(hello,2)
*/

分组后的结果

32.2 grouped

语法:def grouped(size: Int): collection.Iterator[Array[T]]
注解:按指定数量将序列分为2组,每组有 size 数量个元素,返回一个集合(若序列元素数量 > size*2,则超出的元素不参与分组)

val a = Array(1, 2, 3,4,5)
val b = a.grouped(3).toList
b.foreach((x) => println("第"+(b.indexOf(x)+1)+"组:"+x.mkString(",")))
/**
第1组:1,2,3
第2组:4,5
*/val e = Array(1,3,2,4,7,5,4)
val b = a.grouped(2)
b.foreach(x => println(x.mkString(",")))
//结果:1,32,4

33. hasDefiniteSize

语法:def hasDefiniteSize: Boolean
注解:检测序列是否存在有限的长度,对应Stream这样的流数据,返回false

val a = Array(1, 2, 3,4,5)
println(a.hasDefiniteSize)  //true

34. head headOption

34.1 head

语法:def head: T
注解:返回序列的第一个元素,如果序列为空,将引发错误

val a = Array(1, 2, 3,4,5)
println(a.head) //Int = 1

34.2 headOption

语法:def headOption: Option[T]
注解:返回Option类型对象,(scala.Some 或者 None)如果序列是空,返回None

val a = Array(1, 2, 3,4,5)
println(a.headOption)   //Some(1)val a:Array[Int] = Array()
println(a.headOption)   //None

35. indexOf

35.1 indexOf(elem: T)

语法:def indexOf(elem: T): Int
注解:返回elem在序列中的索引,找到第一个就返回索引值,找不到返回-1

val a = Array(1, 3, 2, 3, 4)
println(a.indexOf(3))   // return 1

35.2 indexOf(elem: T, from: Int)

语法:def indexOf(elem: T, from: Int): Int
注解:返回elem在序列中的索引,可以指定从某个索引处(from)开始查找,找到第一个就返回索引值,找不到返回-1

val a = Array(1, 3, 2, 3, 4)
println(a.indexOf(3,2)) // return 3

35.3 indexOfSlice

语法:def indexOfSlice[B >: A](that: GenSeq[B]): Int
注解:检测当前序列中是否包含另一个序列(that),并返回第一个匹配出现的元素的索引,找不到返回-1

val a = Array(1, 3, 2, 3, 4)
val b = Array(2,3)
println(a.indexOfSlice(b))  // return 2

语法:def indexOfSlice[B >: A](that: GenSeq[B], from: Int): Int
注解:检测当前序列中是否包含另一个序列(that),并返回第一个匹配出现的元素的索引,指定从 from 索引处开始,找不到返回-1

val a = Array(1, 3, 2, 3, 2, 3, 4)
val b = Array(2,3)
println(a.indexOfSlice(b,3))    // return 4

35.4 indexWhere

语法1:def indexWhere(p: (T) ⇒ Boolean): Int
注解1:返回当前序列中第一个满足 p 条件的元素的索引

val a = Array(1, 2, 3, 4)
println(a.indexWhere( {x:Int => x>3}))  // return 3

语法2:def indexWhere(p: (T) ⇒ Boolean, from: Int): Int
注解2:返回当前序列中第一个满足 p 条件的元素的索引,可以指定从 from 索引处开始

val a = Array(1, 2, 3, 4, 5, 6)
println(a.indexWhere( {x:Int => x>3},4))    // return 4

36. indices

语法:def indices: collection.immutable.Range
注解:返回当前序列索引集合(对Map无效)

val a = Array(10, 2, 3, 40, 5)
val b = a.indices	//Range(0,1,2,3,4)
println(b.mkString(","))    // 0,1,2,3,4

37. init inits

37.1 init

语法:def init: Array[T]
注解:返回当前序列中不包含最后一个元素的序列

val a = Array(10, 2, 3, 40, 5)
val b = a.init
println(b.mkString(","))    // 10, 2, 3, 40

37.2 inits

语法:def inits: collection.Iterator[Array[T]]
注解:对集合中的元素进行 init 操作,该操作的返回值中, 第一个值是当前序列的副本,包含当前序列所有的元素,最后一个值是空的,对头尾之间的值进行init操作,上一步的结果作为下一步的操作对象

val a = Array(1, 2, 3, 4, 5)
val b = a.inits.toList
b	// b: List[Array[Int]] = List(Array(1, 2, 3, 4, 5), Array(1, 2, 3, 4), Array(1, 2, 3), Array(1, 2), Array(1), Array())
for(i <- 1 to b.length){val s = "第%d个值:%s"println(s.format(i,b(i-1).mkString(",")))
}
/**计算结果
第1个值:1,2,3,4,5
第2个值:1,2,3,4
第3个值:1,2,3
第4个值:1,2
第5个值:1
第6个值
*/val e = Array(1,2,3)
e.inits.foreach(x => println(x,,mkString(",")))
// 结果: 	
1,2,3
1,2
1

38. intersect

语法:def intersect(that: collection.Seq[T]): Array[T]
注解: [ˌɪntəˈsekt];取两个集合的交集

val a = Array(1, 2, 3, 4, 5)
val b = Array(3, 4, 6)
val c = a.intersect(b)
println(c.mkString(","))    //return 3,4

39. isDefinedAt

语法:def isDefinedAt(idx: Int): Boolean
注解: 判断序列中是否存在指定索引

val a = Array(1, 2, 3, 4, 5)
println(a.isDefinedAt(1))   // true
println(a.isDefinedAt(10))  // false

40. isEmpty

语法:def isEmpty: Boolean
注解:判断当前序列是否为空

41. isTraversableAgain

语法:def isTraversableAgain: Boolean
注解:判断序列是否可以反复遍历(迭代器不能反复遍历,即判断是否是迭代器)
(该方法是GenTraversableOnce中的方法,对于 Traversables 一般返回true,对于 Iterators 返回 false,除非被复写)

42. iterator

语法:def iterator: collection.Iterator[T]
注解:对序列中的每个元素产生一个 iterator(任何集合都有iterator方法)

val a = Array(1, 2, 3, 4, 5)
val b = a.iterator  //此时就可以通过迭代器访问 b

43. last

43.1 last

语法:def last: T
注解:取得序列中最后一个元素

val a = Array(1, 2, 3, 4, 5)
println(a.last) // return  5

43.2 lastIndexOf

语法1:def lastIndexOf(elem: T): Int
注解1:取得序列中最后一个等于 elem 的元素的位置,索引值

val a = Array(1, 4, 2, 3, 4, 5)
println(a.lastIndexOf(4))   // return  4

语法2:def lastIndexOf(elem: T, end: Int): Int
注解2:取得序列中最后一个等于 elem 的元素的位置,可以指定在 end 之前的元素(包括end)中查找

val a = Array(1, 4, 2, 3, 4, 5)
println(a.lastIndexOf(4,3)) // return  1

43.3 lastIndexOfSlice

语法1:def lastIndexOfSlice[B >: A](that: GenSeq[B]): Int
注解1:判断当前序列中是否包含序列 that,并返回最后一次出现该序列的位置处的索引

val a = Array(1, 4, 2, 3, 4, 5, 1, 4)
val b = Array(1, 4)
println(a.lastIndexOfSlice(b))  // return  6

语法2:def lastIndexOfSlice[B >: A](that: GenSeq[B], end: Int): Int
注解2::判断当前序列中是否包含序列 that,并返回最后一次出现该序列的位置处的索引,可以指定在 end 之前的元素(包括end)中查找

val a = Array(1, 4, 2, 3, 4, 5, 1, 4)
val b = Array(1, 4)
println(a.lastIndexOfSlice(b,4))    // return  0

43.4 lastIndexWhere

语法1:def lastIndexWhere(p: (T) ⇒ Boolean): Int
注解1:返回当前序列中最后一个满足条件 p 的元素的索引

val a = Array(1, 4, 2, 3, 4, 5, 1, 4)
println(a.lastIndexWhere( {x:Int => x<2}))  // return  6

语法2:def lastIndexWhere(p: (T) ⇒ Boolean, end: Int): Int
注解2:返回当前序列中最后一个满足条件 p 的元素的索引,可以指定在 end 之前(包括)的元素中查找

val a = Array(1, 4, 2, 3, 4, 5, 1, 4)
println(a.lastIndexWhere( {x:Int => x<2},2))    // return  0

44. lastOption

语法:def lastOption: Option[T]
注解:返回当前序列中最后一个对象,若序列为空,返回None

val a = Array(1, 2, 3, 4, 5)
println(a.lastOption)   // return  Some(5)

45. length lengthCompare

45.1 length

语法:def length: Int
注解:返回当前序列中元素个数

val a = Array(1, 2, 3, 4, 5)
println(a.length)   // return  5

45.2 lengthCompare

语法:def lengthCompare(len: Int): Int
注解:比较序列的长度和参数 len,根据二者的关系返回不同的值,比较规则是
x < 0 if this.length < len
x == 0 if this.length == len
x > 0 if this.length > len
结果:this.length - len

val e = Array(1,2,3)
e.lengthCompare(3)	//结果:0
e.lengthCompare(5)	//结果:-2

46. lift

语法:def lift: A1 => Option[B1]
注解:
例:

val a = Array(1,2,3)
val b = a.lift		//b: Int => Option[Int] = <function1>val a = Array(1, 2, 3, "a")	//a: Array[Any] = Array(1, 2, 3, a)
val b = a.lift		//b: Int => Option[Any] = <function1>

47. map

语法:def map[B](f: (A) ⇒ B): Array[B]
注解:对序列中的元素进行 f 操作

val a = Array(1, 2, 3, 4, 5)
val b = a.map( {x:Int => x*10})
println(b.mkString(","))    // 10,20,30,40,50

48. max min

48.1 max

语法:def max: A
注解:返回序列中最大的元素

val a = Array(1, 2, 3, 4, 5)
println(a.max)  // return  5

48.2 maxBy

语法:def maxBy[B](f: (A) ⇒ B): A
注解:返回序列中第一个符合条件的元素

val a = Array(1, 2, 3, 4, 5)
println(a.maxBy( {x:Int => x > 2})) // return  3
val b = Array(1,2,4,3,5)
println(b.maxBy( {x:Int => x > 2})) // return  4

48.3 min

语法:def min: A
注解:返回序列中最小的元素

val a = Array(1, 2, 3, 4, 5)
println(a.max)  // return  1

48.4 minBy

语法:def minBy[B](f: (A) ⇒ B): A
注解:返回序列中第一个不符合条件的元素

val a = Array(1, 2, 3, 4, 5)
println(a.minBy( {x:Int => x > 2})) // return  1
val b = Array(2,1,3,4,5)
println(b.minBy( {x:Int => x > 2})) // return  2

49. mkString

49.1 mkString

语法:def mkString: String
注解:将所有元素组合成一个字符串

val a = Array(1, 2, 3, 4, 5)
println(a.mkString) // return  12345

49.2 mkString(sep: String)

语法:def mkString(sep: String): String
注解:将所有元素组合成一个字符串,以 sep 作为元素间的分隔符

val a = Array(1, 2, 3, 4, 5)
println(a.mkString(","))    // return  1,2,3,4,5

49.3 mkString(start: String, sep: String, end: String)

语法:def mkString(start: String, sep: String, end: String): String
注解:将所有元素组合成一个字符串,以 start 开头,以 sep 作为元素间的分隔符,以 end 结尾

val a = Array(1, 2, 3, 4, 5)
println(a.mkString("{",",","}"))    // return  {1,2,3,4,5}

50. nonEmpty

语法:def nonEmpty: Boolean
注解:判断序列不是空

51. orElse

语法:def orElse[A1 <: Int, B1 >: Any](that: PartialFunction[A1,B1]): PartialFunction[A1,B1]
注解:

52. padTo

语法:def padTo(len: Int, elem: A): Array[A]
注解:后补齐序列,如果当前序列长度小于 len,那么新产生的序列长度是 len,多出的几个位值填充 elem,如果当前序列大于等于 len ,则返回当前序列

val a = Array(1, 2, 3, 4, 5)
val b = a.padTo(7,9)    //需要一个长度为 7  的新序列,空出的填充 9
println(b.mkString(","))    // return  1,2,3,4,5,9,9

53. par

语法:def par: ParArray[T]
注解:返回一个并行实现,产生的并行序列,不能被修改

val a = Array(1, 2, 3, 4, 5)
val b = a.par   // 结果:b: scala.collection.parallel.mutable.ParArray[Int] = ParArray(1, 2, 3, 4, 5)
//  "ParArray" size = 5

54. partition

语法:def partition(p: (T) ⇒ Boolean): (Array[T], Array[T])
注解:按条件将序列拆分成两个新的序列,满足条件的放到第一个序列中,其余的放到第二个序列。
:下面以序列元素是否是 2 的倍数来拆分

val a = Array(1, 2, 3, 4, 5)
val b:(Array[Int],Array[Int]) = a.partition( {x:Int => x % 2 == 0})
println(b._1.mkString(","))     // return  2,4
println(b._2.mkString(","))     // return  1,3,5

55. patch

语法:def patch(from: Int, that: GenSeq[A], replaced: Int): Array[A]
注解: [pætʃ];批量替换,从原序列的 from 处开始,后面的 replaced 数量个元素,将被替换成序列 that

val a = Array(1, 2, 3, 4, 5)
val b = Array(3, 4, 6)
val c = a.patch(1,b,2)
println(c.mkString(","))    // return 1,3,4,6,4,5
/**从 a 的索引1的第二个元素开始,取两个元素,即 2和3 ,这两个元素被替换为 b的内容*/

56. permutations

语法:def permutations: collection.Iterator[Array[T]]
注解:排列组合,他与combinations不同的是,组合中的内容可以相同,但是顺序不能相同,combinations不允许包含的内容相同,即使顺序不一样

val a = Array(1, 2, 3, 4, 5)
val b = a.permutations.toList   // b 中将有120个结果,知道排列组合公式的,应该不难理解吧
/**如果是combinations*/
val b = a.combinations(5).toList    // b 中只有一个,因为不管怎样排列,都是这5个数字组成,所以只能保留第一个val e = Array(1,2,3)
e.permutations.foreach(x=>println(x,mkString(",")))
/**结果
1,2,3
1,3,2
2,1,3
2,3,1
3,1,2
3,2,1
*/

57. prefixLength

语法:def prefixLength(p: (T) ⇒ Boolean): Int
注解:给定一个条件 p,截止到第一个不满足条件的元素,返回一个前置数列的长度,这个数列中的元素都满足 p

val a = Array(1,2,3,4,1,2,3,4)
val b = a.prefixLength( {x:Int => x<4})	 // b = 3
等同于
val b = a.prefixLength( _ < 4)	

58. product

语法:def product: A
注解:返回所有元素乘积的值(只能是数值型)

val a = Array(1,2,3,4,5)
val b = a.product       // b = 120  (1*2*3*4*5)

59. reduce

59.1 reduce

语法:def reduce[A1 >: A](op: (A1, A1) ⇒ A1): A1
注解:对序列中的每个元素进行二元运算(一次取2个值),不需要初始值

def seqno(m:Int,n:Int): Int ={val s = "seq_exp=%d+%d"println(s.format(m,n))return m+n
}val a = Array(1,2,3,4,5)
val b = a.reduce(seqno)
println(b)    	// 结果:15
/**seq_exp=1+2seq_exp=3+3seq_exp=6+4seq_exp=10+5
*/val e = Array(1,2,3)
e.reduce(_+_)		//结果:Int = 6

59.2 reduceLeft

语法:def reduceLeft[B >: A](op: (B, T) ⇒ B): B
注解:从左向右计算

59.3 reduceRight

语法:def reduceRight[B >: A](op: (T, B) ⇒ B): B
注解:从右向左计算

59.4 reduceLeftOption

语法:def reduceLeftOption[B >: A](op: (B, T) ⇒ B): Option[B]
注解:计算Option,参考reduceLeft,防止空数组报错,若空,返回None

59.5 reduceRightOption

语法:def reduceRightOption[B >: A](op: (T, B) ⇒ B): Option[B]
注解:计算Option,参考reduceRight,防止空数组报错,若空,返回None

60. repr

语法:def repr: Array[A1]
注解

61. reverse

61.1 reverse

语法:def reverse: Array[T]
注解:反转序列

val a = Array(1,2,3,4,5)
val b = a.reverse
println(b.mkString(","))    //5,4,3,2,1

61.2 reverseIterator

语法:def reverseIterator: collection.Iterator[T]
注解:反向生成迭代

61.3 reverseMap

语法:def reverseMap[B](f: (A) ⇒ B): Array[B]
注解:同 map 方向相反

val a = Array(1,2,3,4,5)
val b = a.reverseMap( {x:Int => x*10} )
println(b.mkString(","))    // 50,40,30,20,10

62. runWith

语法:def runWith[U](action: A1 => U): Int => Boolean
注解

63. sameElements

语法:def sameElements(that: GenIterable[A]): Boolean
注解:判断两个序列是否顺序和对应位置上的元素都一样

val a = Array(1,2,3,4,5)
val b = Array(1,2,3,4,5)
println(a.sameElements(b))  // trueval c = Array(1,2,3,5,4)
println(a.sameElements(c))  // false

64. scan

64.1 scan

语法:def scan[B >: A, That](z: B)(op: (B, B) ⇒ B)(implicit cbf: CanBuildFrom[Array[T], B, That]): That
注解:用法同 fold,scan会把每一步的计算结果放到一个新的集合中返回,而 fold 返回的是单一的值

val a = Array(1,2,3,4,5)
val b = a.scan(5)(_+_)
println(b.mkString(","))    // 5,6,8,11,15,20

64.2 scanLeft

语法:def scanLeft[B, That](z: B)(op: (B, T) ⇒ B)(implicit bf: CanBuildFrom[Array[T], B, That]): That
注解:从左向右计算

64.3 scanRight

语法:def scanRight[B, That](z: B)(op: (T, B) ⇒ B)(implicit bf: CanBuildFrom[Array[T], B, That]): That
注解:从右向左计算

65. segmentLength

语法:def segmentLength(p: (T) ⇒ Boolean, from: Int): Int
注解:从序列的索引 from 处开始向后查找,所有满足 p 的连续元素的长度

val a = Array(1,2,3,1,1,1,1,1,4,1,5)
val b = a.segmentLength( {x:Int => x < 3},3)        // 5
val b = a.segmentLength( {x:Int => x < 3},4)        // 4

66. seq

语法:def seq: collection.mutable.IndexedSeq[T]
注解:产生一个引用当前序列的 sequential 视图
例:

val e = Array(1,3,2)
e.seq.foreach(println)
/** 结果
1
3
2
*/

67. size

语法:def size: Int
注解:序列元素个数,同 length

68. slice

语法:def slice(from: Int, until: Int): Array[T]
注解: [slaɪs];取出当前序列中,from 到 until 之间的片段(左包右不包)

val a = Array(1,2,3,4,5)
val b = a.slice(1,3)
println(b.mkString(","))    // 2,3

69. sliding

69.1 sliding(size: Int): collection.Iterator[Array[T]]

语法: def sliding(size: Int): collection.Iterator[Array[T]]
注解: [ˈslaɪdɪŋ];从第一个元素开始,每个元素和它后面的 size - 1 个元素组成一个数组,最终组成一个新的集合返回,当剩余元素不够 size 数,则停止

val a = Array(1,2,3,4,5)
val b = a.sliding(3).toList
for(i<-0 to b.length - 1){val s = "第%d个:%s"println(s.format(i,b(i).mkString(",")))
}/**
第0个:1,2,3
第1个:2,3,4
第2个:3,4,5*/

69.2 sliding(size: Int, step: Int): collection.Iterator[Array[T]]

语法:def sliding(size: Int, step: Int): collection.Iterator[Array[T]]
注解:从第一个元素开始,每个元素和它后面的 size - 1 个元素组成一个数组,最终组成一个新的集合返回,当剩余元素不够 size 数,则停止
该方法,可以设置步进 step,第一个元素组合完后,下一个从 上一个元素位置+step后的位置处的元素开始

val a = Array(1,2,3,4,5)
val b = a.sliding(3,2).toList   //第一个从1开始, 第二个从3开始,因为步进是 2
for(i<-0 to b.length - 1){val s = "第%d个:%s"println(s.format(i,b(i).mkString(",")))
}/**
第0个:1,2,3
第1个:3,4,5*/

70. sortBy sortWith sorted

70.1 sortBy

语法:def sortBy[B](f: (T) ⇒ B)(implicit ord: math.Ordering[B]): Array[T]
注解:按指定的排序规则排序

val a = Array(3,2,1,4,5)
val b = a.sortBy( {x:Int => x})
println(b.mkString(","))    // 1,2,3,4,5
// 倒序
val b = a.sortBy( {x:Int => -x})
println(b.mkString(","))    // 5,4,3,2,1

70.2 sortWith

语法:def sortWith(lt: (T, T) ⇒ Boolean): Array[T]
注解:自定义排序方法 lt

val a = Array(3,2,1,4,5)
val b = a.sortWith(_.compareTo(_) > 0)  // 倒序
println(b.mkString(","))    // 5,4,3,2,1
val b = a.sortWith(_.compareTo(_) < 0)  // 正序
println(b.mkString(","))    // 1,2,3,4,5val ff = Array(("张三",50),("李四",70),("王不二",88))
val fd = ff.sortBy(x => x._2)
// fd : Array[(String, Int)] = Array((张三,50), (李四,70), (王不二,88))

70.3 sorted

语法:def sorted[B >: A](implicit ord: math.Ordering[B]): Array[T]
注解:使用默认的排序规则对序列排序(升序)

val a = Array(3,2,1,4,5)
val b = a.sorted    
println(b.mkString(","))    // 1,2,3,4,5

71. span

语法:def span(p: (T) ⇒ Boolean): (Array[T], Array[T])
注解:分割序列为两个集合,从第一个元素开始,直到找到第一个不满足条件的元素止,之前的元素放到第一个集合,其它的放到第二个集合

val a = Array(3,2,1,4,5)
val b = a.span( {x:Int => x > 2})
println(b._1.mkString(","))     //  3
println(b._2.mkString(","))     //  2,1,4,5

72. splitAt

语法:def splitAt(n: Int): (Array[T], Array[T])
注解:从指定位置开始,把序列拆分成两个集合

val a = Array(3,2,1,4,5)
val b = a.splitAt(2)
println(b._1.mkString(",")) //  3,2
println(b._2.mkString(",")) //  1,4,5

73. startsWith

语法1:def startsWith[B](that: GenSeq[B], offset: Int): Boolean
注解1:从指定偏移处,是否以某个序列开始

val a = Array(0,1,2,3,4,5)
val b = Array(1,2)
println(a.startsWith(b,1))      //  true

语法2:def startsWith[B](that: GenSeq[B]): Boolean
注解2:是否以某个序列开始

val a = Array(1,2,3,4,5)
val b = Array(1,2)
println(a.startsWith(b))        //  true

74. stringPrefix

语法:def stringPrefix: String
注解:返回 toString 结果的前缀

val a = Array(0,1,2,3,4,5)
println(a.toString())       //[I@3daa57fb
val b = a.stringPrefix
println(b)      //[I

75. subSequence

语法:def subSequence(start: Int, end: Int): CharSequence
注解:返回 start 和 end 间的字符序列(数组类型必须是Array[Char])(左包右不包)
:

val chars = Array('a','b','c','d')
val b = chars.subSequence(1,3)
println(b.toString)     //  bc

76. sum

语法:def sum: A
注解:序列求和,元素需为Numeric[T]类型

 val a = Array(1,2,3,4,5)val b = a.sum       //  15

77. tail tails

77.1 tail

语法:def tail: Array[T]
注解:返回除了当前序列第一个元素的其它元素组成的序列
(与init相反)

 val a = Array(1,2,3,4,5)val b = a.tail      //  2,3,4,5

77.2 tails

语法:def tails: Array[T]
注解:对集合中的元素进行 tail 操作,该操作的返回值中, 第一个值是当前序列的副本,包含当前序列所有的元素,最后一个值是空的,对头尾之间的值进行tail操作,上一步的结果作为下一步的操作对象

val a = Array(1, 2, 3, 4, 5)
val b = a.tails.toList
b	//b: List[Array[Int]] = List(Array(1, 2, 3, 4, 5), Array(2, 3, 4, 5), Array(3, 4, 5), Array(4, 5), Array(5), Array())
for(i <- 1 to b.length){val s = "第%d个值:%s"println(s.format(i,b(i-1).mkString(",")))
}
/*
第1个值:1,2,3,4,5
第2个值:2,3,4,5
第3个值:3,4,5
第4个值:4,5
第5个值:5
第6个值:
*/

78. take

78.1 take

语法:def take(n: Int): Array[T]
注解:返回当前序列中前 n 个元素组成的序列
:

 val a = Array(1,2,3,4,5)val b = a.take(3)       //  1,2,3

78.2 takeRight

语法:def takeRight(n: Int): Array[T]
注解:返回当前序列中,从右边开始,选择 n 个元素组成的序列

val a = Array(1,2,3,4,5)
val b = a.takeRight(3)      //  3,4,5

78.3 takeWhile

语法:def takeWhile(p: (T) ⇒ Boolean): Array[T]
注解:返回当前序列中,从第一个元素开始,满足条件的连续元素组成的序列

 val a = Array(1,2,3,4,5)val b = a.takeWhile( {x:Int => x < 3})      //  1,2

79. to

79.1 toArray

语法:def toArray: Array[A]
注解:转换成 Array 类型

79.2 toBuffer

语法:def toBuffer[A1 >: A]: Buffer[A1]
注解:转换成 Buffer 类型

79.3 toIndexedSeq

语法:def toIndexedSeq: collection.immutable.IndexedSeq[T]
注解:转换成 IndexedSeq 类型

79.4 toIterable

语法:def toIterable: collection.Iterable[T]
注解: 转换成可迭代的类型

79.5 toIterator

语法:def toIterator: collection.Iterator[T]
注解:同 iterator 方法

79.6 toList

语法:def toList: List[T]
注解:同 List 类型

79.7 toMap

语法:def toMap[T, U]: Map[T, U]
注解:同 Map 类型,需要被转化序列中包含的元素时 Tuple2 类型数据

val chars = Array(("a","b"),("c","d"),("e","f"))
val b = chars.toMap
println(b)      //Map(a -> b, c -> d, e -> f)val a = Array(1,3,4,5,2,5)
val b = a.map((_,1))
val c = b.toMap

79.8 toSeq

语法:def toSeq: collection.Seq[T]
注解:同 Seq 类型

79.9 toSet

语法:def toSet[B >: A]: Set[B]
注解:同 Set 类型

79.10 toStream

语法:def toStream: collection.immutable.Stream[T]
注解:同 Stream 类型(流)

79.11 toVector

语法:def toVector: Vector[T]
注解:同 Vector 类型

79.12 toTraversable

语法:def toTraversable: Traversable[T]
注解:同 Traversable类型

80. transform

语法: def transform(f: T => T): scala.collection.mutable.WrappedArray[T]
注解

81. transpose

语法:def transpose[U](implicit asArray: (T) ⇒ Array[U]): Array[Array[U]]
注解:矩阵转换,二维数组行列转换(转置)

val chars = Array(Array("a","b"),Array("c","d"),Array("e","f"))
val b = chars.transpose
println(b.mkString(","))val k = Array(Array(1,3,2),Array(5,8,2),Array(7,9,8),Array(2,7,5))
val j = k.transpose
// j: Array[Array[Int]] = Array(Array(1, 5, 7, 2), Array(3, 8, 9, 7), Array(2, 2, 8, 5))

转换结果
转换结果

82. union

语法:def union(that: collection.Seq[T]): Array[T]
注解:联合两个序列,同操作符 ++(不去重)

val a = Array(1,2,3,4,5)
val b = Array(6,7)
val c = a.union(b)
println(c.mkString(","))        // 1,2,3,4,5,6,7val a = Array(1,3,3,2,4,5)
val b = Array(4,2,3,8,7,9)
val c = a.union(b)	//c: Array[Int] = Array(1, 3, 3, 2, 4, 5, 4, 2, 3, 8, 7, 9)

83. unzip unzip3

83.1 unzip

语法:def unzip[T1, T2](implicit asPair: (T) ⇒ (T1, T2), ct1: ClassTag[T1], ct2: ClassTag[T2]): (Array[T1], Array[T2])
注解:将含有两个元素的数组,第一个元素取出组成一个序列,第二个元素组成一个序列

val chars = Array(("a","b"),("c","d"))
val b = chars.unzip		//b: (Array[String], Array[String]) = (Array(a, c),Array(b, d))
println(b._1.mkString(","))     //a,c
println(b._2.mkString(","))     //b,d

83.2 unzip3

语法:def unzip3[T1, T2, T3](implicit asTriple: (T) ⇒ (T1, T2, T3), ct1: ClassTag[T1], ct2: ClassTag[T2], ct3: ClassTag[T3]): (Array[T1], Array[T2], Array[T3])
注解:将含有三个元素的三个数组,第一个元素取出组成一个序列,第二个元素组成一个序列,第三个元素组成一个序列

val chars = Array(("a","b","x"),("c","d","y"),("e","f","z"))
val b = chars.unzip3
println(b._1.mkString(","))     //a,c,e
println(b._2.mkString(","))     //b,d,f
println(b._3.mkString(","))     //x,y,z

84. update

语法1:def update(i: Int, x: T): Unit
注解:将序列中 i 索引处的元素更新为 x

val a = Array(1,2,3,4,5)
a.update(1,9)
println(a.mkString(","))        //1,9,3,4,5

语法2:def updated(index: Int, elem: A): Array[A]
注解:将序列中 i 索引处的元素更新为 x ,并返回替换后的数组

val a = Array(1,2,3,4,5)
val b = a.updated(1,9)
println(b.mkString(","))        //1,9,3,4,5

85. view

语法:def view(from: Int, until: Int): IndexedSeqView[T, Array[T]]
注解:返回 from 到 until 间的序列,不包括 until 处的元素

val a = Array(1,2,3,4,5)
val b = a.view(1,3).toArray
println(b.mkString(","))        //2,3

86. withFilter

语法:def withFilter(p: (T) ⇒ Boolean): FilterMonadic[T, Array[T]]
注解:根据条件 p 过滤元素(返回特殊类型FilterMonadic[T, Array[T]])

val a = Array(1,2,3,4,5)
val b = a.withFilter( {x:Int => x>3})	
// b: scala.collection.generic.FilterMonadic[Int,Array[Int]] = scala.collection.TraversableLike$WithFilter@3a36da5e
val c = b.map(x=>x)
println(c.mkString(","))        //4,5

87. zip zipAll zipWithIndex

87.1 zip

语法:def zip[B](that: GenIterable[B]): Array[(A, B)]
注解:将两个序列对应位置上的元素组成一个pair序列

val a = Array(1,2,3,4,5)
val b = Array(5,4,3,2,1)
val c = a.zip(b)
println(c.mkString(","))        //(1,5),(2,4),(3,3),(4,2),(5,1)val a = Array(1,2,3,4,5)
val b = Array(5,4,3,2)
val c = a.zip(b)
println(c.mkString(","))        //(1,5),(2,4),(3,3),(4,2)

87.2 zipAll

语法:def zipAll[B](that: collection.Iterable[B], thisElem: A, thatElem: B): Array[(A, B)]
注解:同 zip ,但是允许两个序列长度不一样,不足的自动填充,如果当前序列端,空出的填充为 thisElem,如果 that 短,填充为 thatElem

val a = Array(1,2,3,4,5,6,7)
val b = Array(5,4,3,2,1)
val c = a.zipAll(b,9,8)         //(1,5),(2,4),(3,3),(4,2),(5,1),(6,8),(7,8)val a = Array(1,2,3,4)
val b = Array(5,4,3,2,1)
val c = a.zipAll(b,9,8)         //(1,5),(2,4),(3,3),(4,2),(9,1)

87.3 zipWithIndex

语法:def zipWithIndex: Array[(A, Int)]
注解:序列中的每个元素和它的索引组成一个序列

val a = Array(10,20,30,40)
val b = a.zipWithIndex
println(b.mkString(","))        //(10,0),(20,1),(30,2),(40,3)
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. markdown使用说明

    markdown文本&#xff0c;创建的文件后缀是.md结尾的&#xff0c; 是在github&#xff0c;npm,码云等代码托管平台上使用一种文本格式&#xff0c; 在这种网站上会自动展示.md文件的内容&#xff0c;主要是说明功能...

    2024/4/20 14:45:15
  2. JS历史、变量、运算符、三目运算符

    JS简介 1.变量 2.数据类型 ** 上面的结果都是314.15 ** ** NaN:不是一个数字 ** 3.运算符 逻辑运算符 添加赋值运算符...

    2024/4/1 17:45:36
  3. MySQL日志-Undo Log、Redo Log

    1. Undo Log介绍 Undo:意为撤销或取消&#xff0c;以撤销操作为目的&#xff0c;返回指定某个状态的操作。Undo Log:数据库事务开始之前&#xff0c;会将要修改的记录存放到 Undo 日志里&#xff0c;当事务回滚时或者数 据库崩溃时&#xff0c;可以利用 Undo 日志&#xff0c;…...

    2024/4/13 23:49:04
  4. c++标准模板库STL容器介绍

    STL(标准模板库)库是用模板(template)写出来的&#xff0c;模板是STL的基础。STL分为&#xff1a;容器&#xff0c;迭代器&#xff0c;适配器&#xff0c;算法&#xff0c;函数对象。其中容器分为&#xff1a;顺序性容器&#xff0c;关联式容器。迭代器有5种&#xff1a;随机访…...

    2024/4/17 12:37:29
  5. ES7相关

    /1.指数运算符&#xff08;幂&#xff09;&#xff1a;* Array.prototype.includes(value):判断数组中是否包含指定value */ 例&#xff1a; console.log(3**3);let arr [1,3,aaa];console.log(arr.includes(a));//精确匹配...

    2024/4/13 22:39:41
  6. 使用联合体判断大小端模式

    1&#xff09;联合体的概念和特征&#xff1a;union维护足够的空间来存放多个数据成员中的“一种”&#xff0c;而不为每一个数据成员都配置空间&#xff0c;在union中所有的成员共用同一个空间&#xff0c;同一时间只存储一个数据成员&#xff0c;最大的特征就是所有的数据成员…...

    2024/4/2 17:41:20
  7. 【Kotlin】Kotlin学习五-接口

    学而不思则罔&#xff0c;思而不学则殆 【Kotlin】Kotlin学习五-接口接口接口实现接口中的属性接口继承解决覆盖冲突接口 Kotlin 的接口可以既包含抽象方法的声明也包含实现。与抽象类不同的是&#xff0c;接口无法保存状态。它可以有属性但必须声明为抽象或 提供访问器实现。…...

    2024/4/27 15:42:27
  8. Python简易计算器

    import tkinter as tk #功能 #加 def append_num(i):lists.append(i)result_num.set(.join(lists))#选择运算符 def operator(i):if len(lists)>0:if lists[-1] in [,-,*,/]:lists[-1]ielse:lists.append(i)result_num.set(.join(lists))#清0 def clear():lists.clear()resu…...

    2024/4/21 12:03:23
  9. Petal Search is currently only available

    Petal Search is currently only available in overseas markets, but domestic users do not have to regret it, because it is basically the same as the "Huawei Search" function that comes with Huawei mobile phones....

    2024/4/12 12:14:49
  10. (4)python讲义笔记----循环和列表

    循环和列表 一、循环(***) 1.1 概念 广义&#xff1a;一个周期现象或者重复出现的情况&#xff0c;这种状态被称为循环 狭义&#xff1a;在满足条件的情况下&#xff0c;反复执行某一段代码&#xff0c;在编程语言中出现的这种现象被称为循环。被反复执行的这段代码被称为循环…...

    2024/4/28 17:20:32
  11. 微信小程序填坑篇 2

    微信小程序开发的时候&#xff0c;很多接口都不太能信任&#xff0c;需要作一些额外的兜底处理。保证程序在什么情况下都能尽可能健康的运行。 也要有一套健全的异常收集反馈机制&#xff0c;方便迅速发现问题解决问题。 小程序生态的异常监控体系&#xff0c;主要包含小程序后…...

    2024/4/13 11:43:07
  12. API-Net

    论文标题&#xff1a;Learning Attentive Pairwise Interaction for Fine-Grained Classification 针对目标&#xff1a;细粒度图像分类 论文来源&#xff1a; AAAI 2020 下载地址&#xff1a;https://arxiv.org/pdf/2002.10191.pdf code地址: 未开源 论文坑点&#xff1a;对设…...

    2024/4/1 17:08:38
  13. Nginx(正向代理、反向代理、负载均衡、动静分离)讲解

    hello你好我是辰兮&#xff0c;今天给整理了一下关于Nginx的相关文章&#xff0c;来简单的带初学者了解一下相关知识点&#xff0c;分享获取新知&#xff0c;大家一起进步&#xff01; 文章目录一、正向代理二、反向代理三、负载均衡四、动静分离什么是 nginx ? Nginx 是高性…...

    2024/4/13 13:34:47
  14. 区块链毕业设计必读论文【29】

    区块链作为一种崭新的、颠覆性的技术&#xff0c;是国内外活跃的研究领域和毕业设计选题方向。本文列出最新的一组区块链方面的论文&#xff0c;希望可以对选择区块链毕业设计的同学们有所帮助&#xff0c;这是汇智网编辑整理的区块链毕业设计论文系列中的第29篇。 区块链开发教…...

    2024/4/29 21:02:15
  15. springcloud-Feign负载均衡

    文章目录 Feign负载均衡1.Feign概述2.Feign使用步骤1.参考microservicecloud-consumer-dept-802.新建microservicecloud-consumer-dept-feign3.microservicecloud-consumer-dept-feign工程pom.xml修改,主要添加对feign的支持4.修改microservicecloud-api工程5.microserviceclo…...

    2024/4/12 5:20:43
  16. 线程介绍与实现

    多线程概念 CPU的运行原理&#xff1a;如果cpu能运行多个任务&#xff0c;那么这么多个任务是互相抢占cpu的资源&#xff0c;交替执行。&#xff08;非常惨烈&#xff09;&#xff1b;cpu像一个工厂&#xff0c;这个工厂中负责很多个车间&#xff0c;那么每个车间就是一个独立…...

    2024/4/25 2:23:49
  17. Map介绍

    映射接口Map 储存唯一不重复&#xff0c;无序的一组数据生活中&#xff0c; 身份证号 -> 一个人110 -> 报警电话一个人的素质 -> 他的家教 这样的一对一的关系&#xff0c;我们就叫做“映射关系”在程序中&#xff0c;这样的数据关系&#xff0c;还有另外一个名字&am…...

    2024/4/1 17:45:30
  18. ARL(Asset Reconnaissance Lighthouse)资产侦察灯塔系统

    资产灯塔&#xff0c;不仅仅是域名收集 https://github.com/TophantTechnology/ARL 简介 旨在快速侦察与目标关联的互联网资产&#xff0c;构建基础资产信息库。 协助甲方安全团队或者渗透测试人员有效侦察和检索资产&#xff0c;发现存在的薄弱点和攻击面。 系统要求 目前…...

    2024/4/21 16:09:53
  19. linux环境编程-文件描述符表

    前面的文章我们以及介绍过PCB了&#xff0c;我们提及到了 一个文件描述符表&#xff0c;那他到底是长什么样子的呢&#xff1f; 我们先来看个视频了解一下 一.口述介绍 其实通常我们看到的 int fd 并不是正真的文件描述符&#xff0c;可以理解成代号&#xff0c;或许是人们这样…...

    2024/4/2 19:43:25
  20. HawkScan

    一款强大的信息收集工具——HawkScanhttps://www.freebuf.com/sectool/245703.html 转自https://www.freebuf.com/...

    2024/4/1 17:45:24

最新文章

  1. HTML页面关于高分屏的设置

    记录一个HTML页面关于高分屏的踩到的坑。 所谓高分屏&#xff0c;就是在同样大小的屏幕面积上显示更多的像素点&#xff0c;这样可以呈现更好的可视效果的屏幕。例如&#xff0c;我的笔记本是15.6寸&#xff0c;理论上它的屏幕分辨率应该是1920 x 1080像素&#xff0c;但实际上…...

    2024/5/4 11:06:26
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. Django实现的登录注册功能

    1 前言 在Web开发中&#xff0c;用户登录和注册是最基本且必不可少的功能。Django&#xff0c;作为一个高级的Python Web框架&#xff0c;为我们提供了强大的工具和库来快速实现这些功能。下面&#xff0c;我将详细介绍如何使用Django来实现用户登录和注册功能。 2 功能介绍 …...

    2024/5/1 13:23:09
  4. mydumper和myloader对MySQL数据备份和恢复

    安装教程省略 一、mydumper数据备份 mydumper -u root -p 123456 -P 3306 -B db1 -o /data/20240329root&#xff1a;数据库用户名 123456&#xff1a;密码 3306&#xff1a;端口 db1&#xff1a;数据库库名 /data/20240329&#xff1a;导出的备份文件存放位置 导出的数据文…...

    2024/5/2 4:21:35
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/3 11:50:27
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/2 16:04:58
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/2 23:55:17
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/3 16:00:51
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/3 11:10:49
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/3 21:22:01
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/3 23:17:01
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/2 23:47:43
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/3 13:26:06
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/3 1:55:15
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/4 2:14:16
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/3 16:23:03
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/3 1:55:09
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/2 8:37:00
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/3 14:57:24
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/2 9:47:25
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/4 2:00:16
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/3 22:03:11
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/4 9:07:39
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/3 1:54:59
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57