数组 Scala 数组、集合函数大全 Scala 数组、集合函数大全-CSDN博客 mkString() 1.添加类函数 ++ 合并集合,并返回一个新的数组,新数组包含左右两个集合的内容 ++: 这个方法同上一个方法类似,两个加号后面多了一个冒号,但是不同的是右边操纵数的类型决定着返回结果的类型 +: 在数组前面添加一个元素,并返回新的数组对象 :+ 在数组后面添加一个元素,并返回新的数组对象 2.生成类函数 clone 创建一个副本 collect 在序列中查找第一个符合偏函数定义的元素,并执行偏函数计算 combinations 表示组合,这个排列组合会选出所有包含字符不一样的组合,但不考虑顺序,对于 “abc”、“cba”,视为相同组合,参数 n 表示序列长度,就是几个字符为一组 copyToArray(arr, start) 将当前数组元素复制到另一个数组中,从 start 位置开始复制 copyToBuffer 将数组中的元素复制到 Buffer 中 permutations 表示排列,这个排列组合会选出所有排列顺序不同的字符组合, permutations 与 combinations 不同的是,相同的组合考虑排列,对于 “abc”、“cba”,视为不同的组合 3.删除类函数 drop 将当前数组中前 n 个元素去除,返回一个新数组 dropWhile 去除当前数组中符合条件的元素,返回剩余的数组,这个需要一个条件,就是从当前数组的第一个元素起,就要满足条件,直到碰到第一个不满足条件的元素结束(即使后面还有符合条件的元素),否则返回整个数组 4.查找类函数 find 查找第一个符合条件的元素,返回 Option filter 查找第符合条件的元素,返回array数组 lastIndexOf(elem) 返回元素 elem 在序列中最后一次出现的索引 lastIndexOfSlice(that) 检测当前序列中是否包含序列 that,并返回最后一次出现该序列的索引 IndexOfSlice(that) 检测当前序列中是否包含序列 that,并返回第一次出现该序列的索引 lastIndexWhere§ 返回当前序列中最后一个满足条件 p 的元素的索引 lastOption 返回序列的最后一个元素的 Option 类型对象,如果序列为空,则返回 None segmentLength 从序列的 from (包含)开始向后查找,返回满足条件 p 的连续元素的长度,不满足条件直接退出,返回长度(可以为0) 5.统计类函数 count 统计符合条件的元素个数 max 返回序列中最大的元素 maxBy 返回序列中符合条件的第一个元素 product 返回所有元素乘积的值 sum 序列求和,元素需为 Numeric[T] 类型 6.修改类函数 updated 将序列中 i 索引处的元素更新为 x,并返回替换后的数组 update 将序列中 i 索引处的元素更新为 x,原地操作 patch 批量替换,从原序列的 from 处开始,后面的 replaced 个元素,将被替换成序列 that 7.判断类函数 contains 判断序列中是否包含指定对象,返回boolean containsSlice 判断当前序列中是否包含另一个序列 endsWith 判断当前序列是否以某个序列结尾 exists 判断当前数组是否包含符合条件的元素 isDefinedAt 判断序列中是否存在指定索引 isEmpty 判断序列是否为空 nonEmpty 判断序列是否不为空 isTraversableAgain 判断序列是否可以反复遍历,该方法是 GenTraversableOnce 中的方法,对于 Traversables 一般返回 true,对于 Iterators 返回 false,除非被复写 forall 检测序列中的元素是否都满足条件 p,如果序列为空,则返回 true sameElements 判断两个序列是否顺序和对应位置上的元素都一样 startsWith(that) 判断序列是否以某个序列开始 startsWith(that, offset) 判断序列从指定偏移处是否以某个序列开始 hasDefiniteSize 检测序列是否存在有限的长度,对应 Stream 这样的流数据则返回 false corresponds 判断两个序列的长度以及对应位置元素是否符合某个条件。如果两个序列具有相同的元素数量并且 8.获取集合元素 apply 获取指定索引处的元素 charAt 获取 index 索引处的字符,这个方法会执行一个隐式的转换,将 Array[T] 转换为 ArrayCharSequence,只有当 T 为 Char 类型时,这个转换才会发生 foreach 遍历序列中的元素,进行 f 操作 head 返回序列的第一个元素,如果序列为空,将引发错误 headOption 返回序列的第一个元素的 Option 类型对象,如果序列为空,则返回 None init 返回当前序列中不包含最后一个元素的序列 inits 对集合中的元素进行 init 迭代操作,该操作的返回值中, 第一个值是当前序列的副本,最后一个值为空,每一步都进行 init 操作,上一步的结果作为下一步的操作对象 tail 返回当前序列中不包含第一个元素的序列 tails 同 inits,每一步都进行 tail 操作 take 返回当前序列中,前 n 个元素组成的序列 takeRight 返回当前序列中,从右边开始,后 n 个元素组成的序列 takeWhile 返回当前序列中,从第一个元素开始,满足条件的连续元素组成的序列 view 返回当前序列中从 from 到 until 之间的序列,不包括 until 处的元素 9.集合操作类函数 filter 取得当前数组中符合条件的元素,组成新的数组返回 filterNot 取得当前数组中不符合条件的元素,组成新的数组返回 withFilter 根据条件 p 过滤元素,如果后续的操作需要使用到map/flatMap/withFilter,推荐使用,这样可以减少filter产生的中间collection,使得执行更加高效 reverse 反转序列 reverseIterator 生成反向迭代器 partition 按条件将序列拆分成两个数组,满足条件的放到第一个数组,其余的放到第二个数组,返回的是包含这两个数组的元组 groupBy 按条件分组,条件由 f 匹配,返回值是 Map 类型,每个 key 对应一个数组 grouped 按指定数量分组,每组有 size 个元素,返回一个迭代器 sortBy 按指定的排序规则对序列排序 sorted 使用默认升序排序 slice 返回当前序列中索引从 from 到 until 之间的序列,不包括 until 处的元素 sliding(size) 滑动,从第一个元素开始,每个元素和它后面的 size - 1 个元素组成一个数组,最终组成一个新的集合返回,当剩余元素个数不够 size 时,则结束 span 将序列拆分成两个数组,从第一个元素开始,直到第一个不满足条件的元素为止,其中的元素放到第一个数组,其余的放到第二个数组,返回的是包含这两个数组的元组 subsequence 返回 start 和 end 间的字符序列,不包含 end 处的元素 10.转换类函数 flatMap 对当前序列的每个元素进行操作,结果放入新序列返回,参数要求是 GenTraversableOnce 及其子类,即返回可迭代的集合 flatten 扁平化,将二维数组的所有元素组合在一起,形成一个一维数组返回(没有参数可传,不可操作) iterator 生成当前序列的迭代器 map 对序列中的元素进行 f 操作,返回生成的新序列,并且能够对结构进行调整 reverseMap 同 map,方向相反 seq 产生一个引用当前序列的 sequential 视图 unzip 将含有两个二元组的数组,每个元组的第一个元素组成一个数组,第二个元素组成一个数组,返回包含这两个数组的元组 unzip3 将含有三个三元组的数组,每个元组的第一个元素组成一个数组,第二个元素组成一个数组,第三个元素组成一个数组,返回包含这三个数组的元组 zipWithIndex 序列中的每个元素和它的索引组成一个元组数组 11.工具类函数 addString(b) 将数组中的元素逐个添加到 StringBuilder 中 distinct 去除当前集合中重复的元素,只保留一个 indices 返回当前序列索引集合 padTo 填充序列,如果当前序列长度小于 len,那么新产生的序列长度是 len,多出的几个位值填充 elem,如果当前序列大于等于 len ,则返回当前序列,并不会截取当前序列 prefixLength 给定一个条件 p,返回一个前置数列的长度,这个数列中的元素都满足 p lengthCompare 比较序列的长度和参数 len,返回:序列的长度 length- 参数len stringPrefix 返回 toString 结果的前缀 12.集合内与集合间计算函数 /: 对数组中所有的元素从左向右遍历,进行相同的迭代操作,foldLeft 的简写,如果是两个集合,则会将 B 先进行累加聚合(foldLeft、foldRight :\ 、fold) reduce 不需要初始值,在集合内部进行聚合运算 reduceLeft 同 foldLeft,从左向右计算,不需要初始值 reduceRight 同 foldRight,从右向左计算,不需要初始值 reduceLeftOption 同 reduceLeft,返回 Option scan 同 fold,scan 会把每一步的计算结果放到一个新的集合中返回,而 fold 返回的是最后的结果 aggregate 聚合计算,aggregate 是柯里化方法,参数是两个方法 diff 计算当前数组与另一个数组的差集,即将当前数组中没有在另一个数组中出现的元素返回 intersect 取两个集合的交集 union 合并两个序列,同操作符 ++ zip 将两个序列对应位置上的元素组成一个元组数组,要求两个序列长度相同 zipAll 同 zip ,但是允许两个序列长度不同,不足的自动填充,如果当前序列短,不足的元素填充为 thisElem,如果 that 序列短,填充为 thatElem def zipAll[B](that: collection.Iterable[B], thisElem: A, thatElem: B): Array[(A, B)] |