scala函数大全

目录

++函数,合并两个集合并且返回一个新数组,++:返回类型和:后的集合类型一样

++:函数,操纵数的类型决定返回结果的类型

+:函数,:于数组前放入元素

/:函数,执行最后一个括号内的加减乘除操作以二叉树的形式

:\函数,执行最后一个括号内的加减乘除操作以二叉树的形式

addString函数添加元素

aggregate函数:聚合分析,先使用给定参数和集合内容进行函数1操作,再将结果进行函数2操作

aggregate函数:聚合分析,先使用给定参数和集合内容进行函数1操作(按照奇数偶数进行分组操作),再将结果进行函数2操作

apply函数:取出索引处的元素

canEqual函数,比较两边,为any的子类都是true

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

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

定义偏函数

combinations函数:排列组合,所有不重复的组合,结果为迭代器集,迭代器只能读一次,之后会释放内存

containsSlice函数:判断数组中是否有指定序列(包括顺序)/必须一摸一样

contains函数:判断序列中是否包含指定对象

copyToArray函数:数组导入数组/集合

copyToBuffer函数:将数组中的内容拷贝到Buffer中

corresponds函数:判断arr数组是否满足arr1条件匹配

count函数:计算符合条件的个数

diff函数:差集,计算当前数组与另一个数组的不同。将当前数组中没有在另一个数组中出现的元素返回

distinct函数:去除当前集合中重复的元素,只保留一个

drop函数:删除元素

dropRight函数:功能同 drop,去掉尾部的 n 个元素

dropWhile函数:去除当前数组中符合条件的元素,这个需要一个条件,就是从当前数组的第一个元素起,就要满足条件,直到碰到第一个不满足条件的元素结束(即使后面还有符合条件的元素),否则返回整个数组

endsWith函数:判断是否以某个序列结尾

exists函数:判断当前数组是否包含符合条件的元素

filter函数:过滤,取得当前数组中符合条件的元素,组成新的数组返回

filterNot函数:过滤,取得当前数组中不符合条件的元素,组成新的数组返回

find函数:寻找第一个符合条件的元素

flatMap函数:对当前序列的每个元素进行操作,结果放入新序列返回,参数要求是GenTraversableOnce及其子类

flatten函数:将二维数组的所有元素联合在一起,形成一个一维数组返回

fold函数:对序列中的每个元素进行二元运算,和aggregate有类似的语义,但执行过程有所不同,我们来对比一下他们的执行过程。

foldLeft函数:从左到右计算

foldRight函数:从右到左计算

forall函数:检测序列中的元素是否都满足条件 p,如果序列为空,返回true

foreach函数:检测序列中的元素是否都满足条件 p,如果序列为空,返回true

groupBy函数:按条件分组,条件由 f 匹配,返回值是Map类型,每个key对应一个序列

grouped函数:按指定数量分组,每组有 size 数量个元素,返回一个集合

hasDefiniteSize函数:检测序列是否存在有限的长度,对应Stream这样的流数据,返回false

head函数:返回序列的第一个元素,如果序列为空,将引发错误

headOption函数:返回Option类型对象,就是scala.Some 或者 None,如果序列是空,返回None

indexOf函数:返回elem在序列中的索引,可以指定从某个索引处(from)开始查找,找到第一个就返回

indexOfSlice函数:检测当前序列中是否包含另一个序列(that),并返回第一个匹配出现的元素的索引

indexWhere函数:返回当前序列中第一个满足 p 条件的元素的索引

indices函数:返回当前序列索引集合

init函数:返回当前序列中不包含最后一个元素的序列,4个元素就返回前三个元素

inits函数:对集合中的元素进行 init 操作,该操作的返回值中, 第一个值是当前序列的副本,包含当前序列所有的元素,最后一个值是空的,对头尾之间的值进行init操作,上一步的结果作为下一步的操作对象

intersect函数:取两个集合的交集,即两个集合都有的元素

isDefinedAt函数:判断序列中是否存在指定索引

isEmpty函数:判断当前序列是否为空

isTraversableAgain函数:判断序列是否可以反复遍历

iterator函数:对序列中的每个元素产生一个 iterator,迭代遍历

last函数:取得序列中最后一个元素

lastIndexOf函数:取得序列中最后一个等于elem元素的位置

lastIndexOfSlice函数:判断当前序列是否含有其他定义好的序列,并且返回最后一次出现该序列位置的索引

lastOption函数:返回当前序列中最后一个对象

length函数:返回当前序列中元素的个数

map函数:对序列中的元素进行定义好的计算操作

max函数:返回序列中最大的元素

minBy函数:返回序列中第一个符合条件的最大的元素

mkString函数:将所有元素组合成一个字符串

nonEmpty函数:判断序列不为空

padTo函数:后补齐序列,如果当前序列长度小于 len,那么新产生的序列长度是 len,多出的几个位值填充 elem,如果当前序列大于等于 len ,则返回当前序列

par函数:返回一个并行实现,产生的并行序列为val,不可被修改

partition函数:按条件将序列拆分成两个新的序列,满足条件的放到第一个序列中,其余的放到第二个序列,下面以序列元素是否是 2 的倍数来拆分

patch函数;批量替换,从原序列的 from 处开始,后面的 replaced 数量个元素,将被替换成序列 that

permutations函数:排列组合,他与combinations不同的是,组合中的内容可以相同,但是顺序不能相同,combinations不允许包含的内容相同,即使顺序不一样

prefixLength函数:给定一个条件 p,返回一个前置数列的长度,这个数列中的元素都满足 p

product函数:返回所有元素乘积的值

reduce函数:同 fold,对序列中的每个元素进行二元运算,不需要初始值

reduceLeft函数:从左向右计算

reduceRight函数:从右向左计算

reduceLeftOption函数:计算Option,参考reduceLeft

reduceRightOption函数:计算Option,参考reduceRight

reverse函数:反转序列

reverseIterator函数:反向生成迭代

reverseMap函数:同 map 方向相反

sameElements函数:判断两个序列是否顺序和对应位置上的元素都一样

scan函数:用法同 fold,scan会把每一步的计算结果放到一个新的集合中返回,而 fold 返回的是单一的值

scanLeft函数:从左向右计算

scanRight函数:从右向左计算

segmentLength函数:从序列的 from 处开始向后查找,所有满足 p 的连续元素的长度

seq函数:产生一个引用当前序列的 sequential 视图

size函数:序列元素个数,同 length

slice函数:取出当前序列中,from 到 until 之间的片段

sliding函数:从第一个元素开始,每个元素和它后面的 size - 1 个元素组成一个数组,最终组成一个新的集合返回,当剩余元素不够 size 数,则停止

sliding函数:从第一个元素开始,每个元素和它后面的 size - 1 个元素组成一个数组,最终组成一个新的集合返回,当剩余元素不够 size 数,则停止 \n该方法,可以设置步进 step,第一个元素组合完后,下一个从 上一个元素位置+step后的位置处的元素开始

sortBy函数:按指定的排序规则排序

sortWith函数:自定义排序方法

sorted函数:使用默认的排序规则对序列排序

span函数:分割序列为两个集合,从第一个元素开始,直到找到第一个不满足条件的元素止,之前的元素放到第一个集合,其它的放到第二个集合

splitAt函数:从指定位置开始,把序列拆分成两个集合

startsWith函数:从指定偏移处,是否以某个序列开始

startsWith函数:是否以某个序列开始

stringPrefix函数:返回 toString 结果的前缀

subSequence函数:返回 start 和 end 间的字符序列

sum函数:序列求和,元素需为Numeric[T]类型

tail函数:返回除了当前序列第一个元素的其它元素组成的序列

take函数:返回当前序列中前 n 个元素组成的序列

takeRight函数:返回当前序列中,从右边开始,选择 n 个元素组成的序列

takeWhile函数:返回当前序列中,从第一个元素开始,满足条件的连续元素组成的序列

toArray函数:转换成 Array 类型

toBuffer函数:转换成 Buffer 类型

toIndexedSeq函数:转换成 IndexedSeq 类型

toIterable函数:转换成可迭代的类型

toIterator函数:转换成可迭代的类型

toList函数:转换为List类型

toMap函数:同 Map 类型,需要被转化序列中包含的元素时 Tuple2 类型数据

toSeq函数:

toSet函数:

toStream函数:

toVector函数:

transpose函数:矩阵转换,二维数组行列转换

union函数:联合两个序列,同操作符 ++

unzip函数:将含有两个元素的数组,第一个元素取出组成一个序列,第二个元素组成一个序列

unzip3函数:将含有三个元素的三个数组,第一个元素取出组成一个序列,第二个元素组成一个序列,第三个元素组成一个序列

update函数:将序列中 i 索引处的元素更新为 x

updated函数:将序列中 i 索引处的元素更新为 x ,并返回替换后的数组

view函数:返回 from 到 until 间的序列,不包括 until 处的元素

withFilter函数:根据条件 p 过滤元素

zip函数:将两个序列对应位置上的元素组成一个pair序列

zipAll函数:同 zip ,但是允许两个序列长度不一样,不足的自动填充,如果当前序列端,空出的填充为 thisElem,如果 that 短,填充为 thatElem

zipWithIndex函数:序列中的每个元素和它的索引组成一个序列


++函数,合并两个集合并且返回一个新数组,++:返回类型和:后的集合类型一样

 println("++函数,合并两个集合并且返回一个新数组,++:返回类型和:后的集合类型一样")
    var numbers = Array(1, 2, 3, 4)
    var numbers2 = Array(3, 4, 5, 6)
    println((numbers ++ numbers2).mkString)

++:函数,操纵数的类型决定返回结果的类型

println("++:函数,操纵数的类型决定返回结果的类型")
    val a1 = List(1, 2)
    val b1 = scala.collection.mutable.LinkedList(3, 4)
    val c1 = a1 ++: b1
    println(c1.getClass().getName())

+:函数,:于数组前放入元素

println("+:函数,:于数组前放入元素")
    println((numbers +: numbers2).mkString)

/:函数,执行最后一个括号内的加减乘除操作以二叉树的形式

println("/:函数,执行最后一个括号内的加减乘除操作以二叉树的形式")
    val c2 = (10 /: numbers) (_ + _) //10为初始值,从左边来加
    println(c2)

:\函数,执行最后一个括号内的加减乘除操作以二叉树的形式

println(":\\函数,执行最后一个括号内的加减乘除操作以二叉树的形式")
    val c3 = (numbers :\ 10) (_ + _) //10为初始值从右边来加
    println(c3)
    var c4 = (numbers :\ 11) ((x, y) => {
      println(x, y);
      x - y
    })
    println(c4)

addString函数添加元素

println("addString函数添加元素")
    numbers.addString(new StringBuilder())
    numbers.addString(new StringBuilder(), "$")
    numbers.addString(new StringBuilder(), "^")
    numbers.addString(new StringBuilder(), "(", "^", ")")

aggregate函数:聚合分析,先使用给定参数和集合内容进行函数1操作,再将结果进行函数2操作

 println("aggregate函数:聚合分析,先使用给定参数和集合内容进行函数1操作,再将结果进行函数2操作")
    println(arr.par.aggregate(5)(_ + _, _ + _)) //多线程,结果可能不准确,为16或21,慎用

aggregate函数:聚合分析,先使用给定参数和集合内容进行函数1操作(按照奇数偶数进行分组操作),再将结果进行函数2操作

println("aggregate函数:聚合分析,先使用给定参数和集合内容进行函数1操作(按照奇数偶数进行分组操作),再将结果进行函数2操作")
    arr.aggregate(0)((x, y) => {
      println("left", x, y);
      x + y
    }, (x, y) => {
      println("right", x, y);
      x + y
    })

apply函数:取出索引处的元素

 println("apply函数:取出索引处的元素")
    val first = numbers(0)
    println(first)

canEqual函数,比较两边,为any的子类都是true

println("canEqual函数,比较两边,为any的子类都是true")
    var bool = arr.canEqual(1) //判断能不能比较两边,只要是any的子类就是true(没什么用)

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

println("charAt函数,获取index索引处的字符,这个方法会执行一个隐式的转换,将Array[T]转换为 ArrayCharSequence,只有当T为char类型时,这个转换才会发生。")
    var array1 = Array('a', 'b', 'c')
    val c = array1.charAt(1) == array1(1)
    var arr2 = arr :+ 124

    def abc(sz: Array[Int]) = {
      sz(1) = 100;
    }

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

 println(" collectFirst函数:在序列中查找第一个符合偏函数定义的元素,并执行偏函数计算")
    arr.collect(pfun)
    arr.collectFirst(pfun).get //结果是Some类型的,some可以get到值(1个)
    arr.collect { case x if (x % 2 == 0) => x + 5 }
    arr.combinations(2)
    println("collect调用偏函数,通过执行一个并行计算(偏函数),得到一个新的数组对象")
    var char = Array('a', 'b', 'c')
    char.collect({ case 'a' => 'A' case x => x })
    println(char.mkString(","))
    println("将数组中所有的值通过偏函数计算得到一个新的数组对象")
    var info = Array("male", "男", "1", "female", "女", "0")
    val strings = info.collect({ case "男" => "male" case "女" => "female" case "1" => "male" case "0" => "female" })
    println(strings.mkString(","))

定义偏函数

//注意地址值,注意对象的值前后变化
    //定义偏函数
    def pfun: PartialFunction[Int, Int] = {
      case x if (x % 2 == 0) => x + 5
    }

combinations函数:排列组合,所有不重复的组合,结果为迭代器集,迭代器只能读一次,之后会释放内存

//排列组合,所有不重复的组合,结果为迭代器集,迭代器只能读一次,之后会释放内存
    println("combinations函数:排列组合,所有不重复的组合,结果为迭代器集,迭代器只能读一次,之后会释放内存")
    arr.combinations(2).foreach(x => println(x.mkString(",")))
    arr.contains(2)

containsSlice函数:判断数组中是否有指定序列(包括顺序)/必须一摸一样

//判断数组中是否有指定序列(包括顺序)/必须一摸一样
    println(" containsSlice函数:判断数组中是否有指定序列(包括顺序)/必须一摸一样")
    arr.containsSlice(List(1, 2))

contains函数:判断序列中是否包含指定对象

println("contains函数:判断序列中是否包含指定对象")
    println(arr.contains(1))

copyToArray函数:数组导入数组/集合

 //数组导入数组/集合
    println("copyToArray函数:数组导入数组/集合")
    var arr3 = Array(0, 0, 0, 0, 0)
    arr.copyToArray(arr3, 1, 3)
    arr3.foreach(print)

copyToBuffer函数:将数组中的内容拷贝到Buffer中

 println("copyToBuffer函数:将数组中的内容拷贝到Buffer中")
    import scala.collection.mutable.ArrayBuffer //导包
    var lst = ArrayBuffer[Int]() //指定泛型
    arr.copyToBuffer(lst);
    lst.foreach(println) //遍历输出

corresponds函数:判断arr数组是否满足arr1条件匹配

//判断是否满足条件匹配
    println("corresponds函数:判断arr数组是否满足arr1条件匹配")
    var arr1 = Array(1, 2, 3)
    arr.corresponds(arr1)(_ <= _)
    arr.corresponds(arr1)(_ >= _) //判断满足条件(同长度)
    (arr :+ 10).copyToArray(arr1)
    arr.copyToArray(arr1 :+ 10)

count函数:计算符合条件的个数

//计算符合条件的个数
    println("count函数:计算符合条件的个数")
    arr.count(x => x % 2 == 0)
    var ints = Array(5, 3, 8, 7, 9, 10, 3)
    println(ints.count(_ > 8))

diff函数:差集,计算当前数组与另一个数组的不同。将当前数组中没有在另一个数组中出现的元素返回

 //差集
    println("diff函数:差集,计算当前数组与另一个数组的不同。将当前数组中没有在另一个数组中出现的元素返回")
    val a = Array(1, 2, 3, 4)
    val b = Array(4, 5, 6, 7)
    a.diff(b).foreach(println)

distinct函数:去除当前集合中重复的元素,只保留一个

println("distinct函数:去除当前集合中重复的元素,只保留一个")
    val a2 = Array(1, 2, 3, 4, 4, 5, 5, 6, 6)
    val c5 = a2.distinct
    println(c5.mkString(","))

drop函数:删除元素

println("drop函数:删除元素")
    arr.drop(1)

dropRight函数:功能同 drop,去掉尾部的 n 个元素

println("dropRight函数:功能同 drop,去掉尾部的 n 个元素")
    arr.dropRight(1)

dropWhile函数:去除当前数组中符合条件的元素,这个需要一个条件,就是从当前数组的第一个元素起,就要满足条件,直到碰到第一个不满足条件的元素结束(即使后面还有符合条件的元素),否则返回整个数组

println("dropWhile函数:去除当前数组中符合条件的元素,这个需要一个条件,就是从当前数组的第一个元素起,就要满足条件,直到碰到第一个不满足条件的元素结束(即使后面还有符合条件的元素),否则返回整个数组")
    val a3 = Array(3, 2, 3, 4)
    val c6 = a3.dropWhile({ x: Int => x > 2 })
    println(c6.mkString(","))

endsWith函数:判断是否以某个序列结尾

println("endsWith函数:判断是否以某个序列结尾")
    val b2 = Array(3, 4)
    println(a3.endsWith(b2))

exists函数:判断当前数组是否包含符合条件的元素

println("exists函数:判断当前数组是否包含符合条件的元素")
    println(a3.exists({ x: Int => x == 3 }))
    println(a3.exists({ x: Int => x == 30 }))

filter函数:过滤,取得当前数组中符合条件的元素,组成新的数组返回

println("filter函数:过滤,取得当前数组中符合条件的元素,组成新的数组返回")
    println(arr.filter(x => x % 1 == 0).mkString(","))

filterNot函数:过滤,取得当前数组中不符合条件的元素,组成新的数组返回

println("filterNot函数:过滤,取得当前数组中不符合条件的元素,组成新的数组返回")
    println(arr.filterNot(x => x % 2 == 0).mkString(","))

find函数:寻找第一个符合条件的元素

println("find函数:寻找第一个符合条件的元素")
    println(arr.mkString(","))
    println(arr.find(_ > 1))
    arr.find({ x: Int => x > 1 })

flatMap函数:对当前序列的每个元素进行操作,结果放入新序列返回,参数要求是GenTraversableOnce及其子类

println("flatMap函数:对当前序列的每个元素进行操作,结果放入新序列返回,参数要求是GenTraversableOnce及其子类")
    val b3 = a.flatMap(x => 1 to x)
    println(b3.mkString(","))

flatten函数:将二维数组的所有元素联合在一起,形成一个一维数组返回

println(" flatten函数:将二维数组的所有元素联合在一起,形成一个一维数组返回")
    val dArr = Array(Array(1, 2, 3), Array(4, 5, 6))
    val c7 = dArr.flatten
    println(c7.mkString(","))

fold函数:对序列中的每个元素进行二元运算,和aggregate有类似的语义,但执行过程有所不同,我们来对比一下他们的执行过程。

println("fold函数:对序列中的每个元素进行二元运算,和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 b4 = a.fold(5)(seqno)
    println(b4)
    val c8 = a.par.aggregate(5)(seqno, combine)
    println(c8)

foldLeft函数:从左到右计算

println("foldLeft函数:从左到右计算")
    val b5 = a.foldLeft(5)(seqno)

foldRight函数:从右到左计算

  println("foldRight函数:从右到左计算")
    val b6 = a.foldRight(5)(seqno)

forall函数:检测序列中的元素是否都满足条件 p,如果序列为空,返回true

 println("forall函数:检测序列中的元素是否都满足条件 p,如果序列为空,返回true")
    val b7 = a.forall({ x: Int => x > 0 })
    println(b7)
    val b8 = a.forall({ x: Int => x > 2 })
    println(b8)

 

foreach函数:检测序列中的元素是否都满足条件 p,如果序列为空,返回true

println("foreach函数:检测序列中的元素是否都满足条件 p,如果序列为空,返回true")
    val b9 = a.foreach(x => println(x * 100))

groupBy函数:按条件分组,条件由 f 匹配,返回值是Map类型,每个key对应一个序列

println("groupBy函数:按条件分组,条件由 f 匹配,返回值是Map类型,每个key对应一个序列")
    val b10 = a.groupBy(x => x match {
      case x if (x < 3) => "small"
      case _ => "big"
    })
    println(b10)

grouped函数:按指定数量分组,每组有 size 数量个元素,返回一个集合

 println("grouped函数:按指定数量分组,每组有 size 数量个元素,返回一个集合")
    val b11 = a.grouped(3).toList
    b11.foreach((x) => println("第" + (b.indexOf(x) + 1) + "组:" + x.mkString(",")))

hasDefiniteSize函数:检测序列是否存在有限的长度,对应Stream这样的流数据,返回false

println("hasDefiniteSize函数:检测序列是否存在有限的长度,对应Stream这样的流数据,返回false")
    println(a.hasDefiniteSize)

head函数:返回序列的第一个元素,如果序列为空,将引发错误

println("head函数:返回序列的第一个元素,如果序列为空,将引发错误")
    println(a.head)

headOption函数:返回Option类型对象,就是scala.Some 或者 None,如果序列是空,返回None

println("headOption函数:返回Option类型对象,就是scala.Some 或者 None,如果序列是空,返回None")
    println(a.headOption)

indexOf函数:返回elem在序列中的索引,可以指定从某个索引处(from)开始查找,找到第一个就返回

println("indexOf函数:返回elem在序列中的索引,可以指定从某个索引处(from)开始查找,找到第一个就返回")
    println(a.indexOf(3))

indexOfSlice函数:检测当前序列中是否包含另一个序列(that),并返回第一个匹配出现的元素的索引

println("indexOfSlice函数:检测当前序列中是否包含另一个序列(that),并返回第一个匹配出现的元素的索引")
    val b12 = Array(2, 3)
    println(a.indexOfSlice(b11))
    println(a.indexOfSlice(b11, 3))

indexWhere函数:返回当前序列中第一个满足 p 条件的元素的索引

println("indexWhere函数:返回当前序列中第一个满足 p 条件的元素的索引")
    println(a.indexWhere({ x: Int => x > 3 }))
    println(a.indexWhere({ x: Int => x > 3 }, 4))

indices函数:返回当前序列索引集合

println(" indices函数:返回当前序列索引集合")
    val b13 = a.indices
    println(b13.mkString(","))

init函数:返回当前序列中不包含最后一个元素的序列,4个元素就返回前三个元素

println("init函数:返回当前序列中不包含最后一个元素的序列,4个元素就返回前三个元素")
    val b15 = a.init
    println(b.mkString(","))

inits函数:对集合中的元素进行 init 操作,该操作的返回值中, 第一个值是当前序列的副本,包含当前序列所有的元素,最后一个值是空的,对头尾之间的值进行init操作,上一步的结果作为下一步的操作对象

println("inits函数:对集合中的元素进行 init 操作,该操作的返回值中, 第一个值是当前序列的副本,包含当前序列所有的元素,最后一个值是空的,对头尾之间的值进行init操作,上一步的结果作为下一步的操作对象")
    val b14 = a.inits.toList
    for (i <- 1 to b14.length) {
      val s = "第%d个值:%s"
      println(s.format(i, b14(i - 1).mkString(",")))
    }

intersect函数:取两个集合的交集,即两个集合都有的元素

println("intersect函数:取两个集合的交集,即两个集合都有的元素")
    //    val a = Array(1, 2, 3, 4)
    //    val b = Array(4, 5, 6, 7)
    val c9 = a.intersect(b)
    println(c9.mkString(","))

isDefinedAt函数:判断序列中是否存在指定索引

println("isDefinedAt函数:判断序列中是否存在指定索引")
    //    val a = Array(1, 2, 3, 4)
    println(a.isDefinedAt(1))
    println(a.isDefinedAt(11))

isEmpty函数:判断当前序列是否为空

println(" isEmpty函数:判断当前序列是否为空")
    println(a.isEmpty)

isTraversableAgain函数:判断序列是否可以反复遍历

println(" isTraversableAgain函数:判断序列是否可以反复遍历")
    val b16 = a.iterator
    val b17 = a.toTraversable
    println(b16.isTraversableAgain)
    println(b17.isTraversableAgain)

iterator函数:对序列中的每个元素产生一个 iterator,迭代遍历

println("iterator函数:对序列中的每个元素产生一个 iterator,迭代遍历")
    println(a.iterator.mkString(","))

last函数:取得序列中最后一个元素

println("last函数:取得序列中最后一个元素")
    println(a.last)

lastIndexOf函数:取得序列中最后一个等于elem元素的位置

println("lastIndexOf函数:取得序列中最后一个等于elem元素的位置")
    val a4 = Array(1, 2, 2, 3, 4, 5, 6, 8, 2, 5)
    println(a4.lastIndexOf(5))
    println("可以指定结束end的位置")
    println(a4.lastIndexOf(2, 5))

lastIndexOfSlice函数:判断当前序列是否含有其他定义好的序列,并且返回最后一次出现该序列位置的索引

println("lastIndexOfSlice函数:判断当前序列是否含有其他定义好的序列,并且返回最后一次出现该序列位置的索引")
    val b18 = Array(2, 3)
    println(a4.lastIndexOfSlice(b18))
    println("也可以指定结束end的位置")
    println(a4.lastIndexOfSlice(b18, 5))

lastOption函数:返回当前序列中最后一个对象

println("lastOption函数:返回当前序列中最后一个对象")
    println(a.lastOption)

length函数:返回当前序列中元素的个数

println("length函数:返回当前序列中元素的个数")
    println(a.length)

map函数:对序列中的元素进行定义好的计算操作

println("map函数:对序列中的元素进行定义好的计算操作")
    val b19 = a.map({ x: Int => x * 10 })
    println(b19.mkString(","))
    val a5 = Array("name", "age", "gender")
    val b20 = a5.map({ x: String => x + "no" })
    println(b20.mkString(","))

max函数:返回序列中最大的元素

 println("max函数:返回序列中最大的元素")
    println(a.max)

minBy函数:返回序列中第一个符合条件的最大的元素

println("minBy函数:返回序列中第一个符合条件的最大的元素")
    println(a.minBy({ x: Int => x > 1 }))

mkString函数:将所有元素组合成一个字符串

println("mkString函数:将所有元素组合成一个字符串")
    println(a.mkString)
    println("将所有元素组合成一个字符串,以 sep 作为元素间的分隔符")
    println(a.mkString(","))
    println("将所有元素组合成一个字符串,以 start 开头,以 sep 作为元素间的分隔符,以 end 结尾")
    println(a.mkString("{", ",", "}"))

nonEmpty函数:判断序列不为空

println(" nonEmpty函数:判断序列不为空")
    println(a.nonEmpty)

padTo函数:后补齐序列,如果当前序列长度小于 len,那么新产生的序列长度是 len,多出的几个位值填充 elem,如果当前序列大于等于 len ,则返回当前序列

println("padTo函数:后补齐序列,如果当前序列长度小于 len,那么新产生的序列长度是 len,多出的几个位值填充 elem,如果当前序列大于等于 len ,则返回当前序列")
    val b21 = a.padTo(10, 81)
    println(b21.mkString(","))

par函数:返回一个并行实现,产生的并行序列为val,不可被修改

println("par函数:返回一个并行实现,产生的并行序列为val,不可被修改")
    val b22 = a.par
    println(b22.mkString(","))

partition函数:按条件将序列拆分成两个新的序列,满足条件的放到第一个序列中,其余的放到第二个序列,下面以序列元素是否是 2 的倍数来拆分

println(" partition函数:按条件将序列拆分成两个新的序列,满足条件的放到第一个序列中,其余的放到第二个序列,下面以序列元素是否是 2 的倍数来拆分")
    val b23: (Array[Int], Array[Int]) = a.partition({ x: Int => x % 2 == 0 })
    println(b23._1.mkString(","))
    println(b23._2.mkString(","))

patch函数;批量替换,从原序列的 from 处开始,后面的 replaced 数量个元素,将被替换成序列 that

println("patch函数;批量替换,从原序列的 from 处开始,后面的 replaced 数量个元素,将被替换成序列 that")
    val b24 = Array(3, 4, 6)
    val c10 = a.patch(1, b24, 2) //从第2个元素开始取两个元素,将其替换为b24序列里面的元素
    println(c10.mkString(","))

permutations函数:排列组合,他与combinations不同的是,组合中的内容可以相同,但是顺序不能相同,combinations不允许包含的内容相同,即使顺序不一样

println(" permutations函数:排列组合,他与combinations不同的是,组合中的内容可以相同,但是顺序不能相同,combinations不允许包含的内容相同,即使顺序不一样")
    val b25 = a.permutations.toList
    println(b25.mkString(","))
    val b26 = a.combinations(5).toList
    println(b26.mkString(","))

prefixLength函数:给定一个条件 p,返回一个前置数列的长度,这个数列中的元素都满足 p

println("prefixLength函数:给定一个条件 p,返回一个前置数列的长度,这个数列中的元素都满足 p")
    val b27 = a.prefixLength({ x: Int => x < 4 })
    println(b27)

product函数:返回所有元素乘积的值

println("product函数:返回所有元素乘积的值")
    val b28 = a.product
    println(b28)

reduce函数:同 fold,对序列中的每个元素进行二元运算,不需要初始值

println("reduce函数:同 fold,对序列中的每个元素进行二元运算,不需要初始值")
    //    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 b29 = a.fold(5)(seqno)
    println(b29)
    val c11 = a.reduce(seqno)
    println(c11)

reduceLeft函数:从左向右计算

println("reduceLeft函数:从左向右计算")
    val c12 = a.reduceLeft(seqno)
    println(c12)

reduceRight函数:从右向左计算

println("reduceRight函数:从右向左计算")
    val c13 = a.reduceRight(seqno)
    println(c13)

reduceLeftOption函数:计算Option,参考reduceLeft

println("reduceLeftOption函数:计算Option,参考reduceLeft")
    val c14 = a.reduceLeftOption(seqno)
    println(c14)

reduceRightOption函数:计算Option,参考reduceRight

println("reduceRightOption函数:计算Option,参考reduceRight")
    val c15 = a.reduceRightOption(seqno)
    println(c15)

reverse函数:反转序列

println("reverse函数:反转序列")
    val b30 = a.reverse
    println(b30.mkString(","))

reverseIterator函数:反向生成迭代

println("reverseIterator函数:反向生成迭代")
    val b31 = a.reverseIterator
    println(b31.mkString(","))

reverseMap函数:同 map 方向相反

println("reverseMap函数:同 map 方向相反")
    val b32 = a.reverseMap({ x: Int => x * 10 })
    println(b32.mkString(","))

sameElements函数:判断两个序列是否顺序和对应位置上的元素都一样

println("sameElements函数:判断两个序列是否顺序和对应位置上的元素都一样")
    println(a.sameElements(b))
    val c16 = Array(1, 2, 3, 4)
    println(c16.sameElements(a))

scan函数:用法同 fold,scan会把每一步的计算结果放到一个新的集合中返回,而 fold 返回的是单一的值

println("scan函数:用法同 fold,scan会把每一步的计算结果放到一个新的集合中返回,而 fold 返回的是单一的值")
    val b33 = a.scan(5)(seqno)
    println(b33.mkString(","))

scanLeft函数:从左向右计算

println("scanLeft函数:从左向右计算")
    val b34 = a.scanLeft(5)(seqno)
    println(b34.mkString(","))

scanRight函数:从右向左计算

println("scanRight函数:从右向左计算")
    val b35 = a.scanRight(5)(seqno)
    println(b35.mkString(","))

segmentLength函数:从序列的 from 处开始向后查找,所有满足 p 的连续元素的长度

println("segmentLength函数:从序列的 from 处开始向后查找,所有满足 p 的连续元素的长度")
    val a8 = Array(1, 2, 3, 1, 1, 1, 1, 1, 1, 4, 5)
    val b36 = a8.segmentLength({ x: Int => x < 3 }, 3)
    println(b36)

seq函数:产生一个引用当前序列的 sequential 视图

size函数:序列元素个数,同 length

println("size函数:序列元素个数,同 length")
    println(a.size)

slice函数:取出当前序列中,from 到 until 之间的片段

println("slice函数:取出当前序列中,from 到 until 之间的片段")
    val b37 = a.slice(1, 3)
    println(b37.mkString(","))

sliding函数:从第一个元素开始,每个元素和它后面的 size - 1 个元素组成一个数组,最终组成一个新的集合返回,当剩余元素不够 size 数,则停止

println("sliding函数:从第一个元素开始,每个元素和它后面的 size - 1 个元素组成一个数组,最终组成一个新的集合返回,当剩余元素不够 size 数,则停止")
    val b38 = a.sliding(3).toList
    for (i <- 0 to b38.length - 1) {
      val s = "第%d个:%s"
      println(s.format(i, b38(i).mkString(",")))
    }
    println(b38.mkString(","))

 

sliding函数:从第一个元素开始,每个元素和它后面的 size - 1 个元素组成一个数组,最终组成一个新的集合返回,当剩余元素不够 size 数,则停止 \n该方法,可以设置步进 step,第一个元素组合完后,下一个从 上一个元素位置+step后的位置处的元素开始

println("sliding函数:从第一个元素开始,每个元素和它后面的 size - 1 个元素组成一个数组,最终组成一个新的集合返回,当剩余元素不够 size 数,则停止 \n该方法,可以设置步进 step,第一个元素组合完后,下一个从 上一个元素位置+step后的位置处的元素开始")

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

sortBy函数:按指定的排序规则排序

println("sortBy函数:按指定的排序规则排序")
    val b40 = a.sortBy({ x: Int => x })
    println(b40.mkString(","))

sortWith函数:自定义排序方法

println("sortWith函数:自定义排序方法")
    val b41 = a.sortWith(_.compareTo(_) > 0)
    println(b41.mkString(","))

sorted函数:使用默认的排序规则对序列排序

println("sorted函数:使用默认的排序规则对序列排序")
    println(a.sorted.mkString(","))

span函数:分割序列为两个集合,从第一个元素开始,直到找到第一个不满足条件的元素止,之前的元素放到第一个集合,其它的放到第二个集合

println("span函数:分割序列为两个集合,从第一个元素开始,直到找到第一个不满足条件的元素止,之前的元素放到第一个集合,其它的放到第二个集合")
    val b42 = a.span({ x: Int => x > 2 })
    println(b42._1.mkString(","))
    println(b42._2.mkString(","))

splitAt函数:从指定位置开始,把序列拆分成两个集合

println("splitAt函数:从指定位置开始,把序列拆分成两个集合")
    val b43 = a.splitAt(2)
    println(b43._1.mkString(","))
    println(b43._2.mkString(","))

startsWith函数:从指定偏移处,是否以某个序列开始

println("startsWith函数:从指定偏移处,是否以某个序列开始")
    val b44 = Array(2, 3)
    println(a.startsWith(b44, 0))

startsWith函数:是否以某个序列开始

println("startsWith函数:是否以某个序列开始")
    val b45 = Array(2, 3)
    println(a.startsWith(b45))

stringPrefix函数:返回 toString 结果的前缀

println("stringPrefix函数:返回 toString 结果的前缀")
    println(a.toString())
    println(a.stringPrefix)

subSequence函数:返回 start 和 end 间的字符序列

println("subSequence函数:返回 start 和 end 间的字符序列")
    val chars1 = Array('a', 'b', 'c', 'd')
    val b46 = chars1.subSequence(1, 3)
    println(b46.toString)

sum函数:序列求和,元素需为Numeric[T]类型

println("sum函数:序列求和,元素需为Numeric[T]类型")
    println(a.sum)

tail函数:返回除了当前序列第一个元素的其它元素组成的序列

println("tail函数:返回除了当前序列第一个元素的其它元素组成的序列")
    println(a.tail.mkString(","))

take函数:返回当前序列中前 n 个元素组成的序列

println("take函数:返回当前序列中前 n 个元素组成的序列")
    println(a.take(3))

takeRight函数:返回当前序列中,从右边开始,选择 n 个元素组成的序列

println("takeRight函数:返回当前序列中,从右边开始,选择 n 个元素组成的序列")
    println(a.takeRight(3).mkString(","))

takeWhile函数:返回当前序列中,从第一个元素开始,满足条件的连续元素组成的序列

println("takeWhile函数:返回当前序列中,从第一个元素开始,满足条件的连续元素组成的序列")
    println(a.takeWhile({ x: Int => x < 3 }).mkString(","))

toArray函数:转换成 Array 类型

println(" toArray函数:转换成 Array 类型")
    val d = ArrayBuffer(1, 2, 3, 4)
    println(d.toArray.getClass.getName)

toBuffer函数:转换成 Buffer 类型

toIndexedSeq函数:转换成 IndexedSeq 类型

toIterable函数:转换成可迭代的类型

toIterator函数:转换成可迭代的类型

toList函数:转换为List类型

toMap函数:同 Map 类型,需要被转化序列中包含的元素时 Tuple2 类型数据

toSeq函数:

toSet函数:

toStream函数:

toVector函数:

transpose函数:矩阵转换,二维数组行列转换

println("f transpose函数:矩阵转换,二维数组行列转换")
    val chars2 = Array(Array("a", "b"), Array("c", "d"), Array("e", "f"))
    val b48 = chars2.transpose
    println(b48.mkString(","))

union函数:联合两个序列,同操作符 ++

println("union函数:联合两个序列,同操作符 ++")
    val a12 = Array(1, 2, 3, 4, 5)
    val b49 = Array(6, 7)
    val c17 = a12.union(b49)
    println(c17.mkString(","))

unzip函数:将含有两个元素的数组,第一个元素取出组成一个序列,第二个元素组成一个序列

println("unzip函数:将含有两个元素的数组,第一个元素取出组成一个序列,第二个元素组成一个序列")
    val a13 = Array(("a", "b"), ("c", "d"))
    val b50 = a13.unzip
    println(b50._1.mkString(","))
    println(b50._2.mkString(","))

unzip3函数:将含有三个元素的三个数组,第一个元素取出组成一个序列,第二个元素组成一个序列,第三个元素组成一个序列

println("unzip3函数:将含有三个元素的三个数组,第一个元素取出组成一个序列,第二个元素组成一个序列,第三个元素组成一个序列")
    val a14 = Array(("a", "b", "c"), ("d", "e", "f"), ("g", "h", "y"))
    val b51 = a13.unzip
    println(b51._1.mkString(","))
    println(b51._2.mkString(","))

update函数:将序列中 i 索引处的元素更新为 x

println("update函数:将序列中 i 索引处的元素更新为 x")
    a.update(1, 9)
    println(a.mkString(","))

updated函数:将序列中 i 索引处的元素更新为 x ,并返回替换后的数组

println("updated函数:将序列中 i 索引处的元素更新为 x ,并返回替换后的数组")
    println(a.updated(1, 9).mkString(","))

view函数:返回 from 到 until 间的序列,不包括 until 处的元素

println(" view函数:返回 from 到 until 间的序列,不包括 until 处的元素")
    println(a.view(1, 3).mkString(","))

withFilter函数:根据条件 p 过滤元素

println("withFilter函数:根据条件 p 过滤元素")
    println(a.withFilter({ x: Int => x > 3 }).map(x => x).mkString(","))

zip函数:将两个序列对应位置上的元素组成一个pair序列

println("zip函数:将两个序列对应位置上的元素组成一个pair序列")
    val c20 = a.zip(b)
    println(c20.mkString(","))

zipAll函数:同 zip ,但是允许两个序列长度不一样,不足的自动填充,如果当前序列端,空出的填充为 thisElem,如果 that 短,填充为 thatElem

println("zipAll函数:同 zip ,但是允许两个序列长度不一样,不足的自动填充,如果当前序列端,空出的填充为 thisElem,如果 that 短,填充为 thatElem")
    val c21 = a.zipAll(b, 9, 8)
    println(c21.mkString(","))

zipWithIndex函数:序列中的每个元素和它的索引组成一个序列

println("zipWithIndex函数:序列中的每个元素和它的索引组成一个序列")
    println(a.zipWithIndex.mkString(","))

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值