
Traversable是所有collections的父类
Traversable是所有集合层级的最顶端的,他只有一个抽象方法, foreach:
|
1
|
def
foreach[U](f
:
Elem
=
> U)
|
实现Traversable只需要定义这个方法,其他方法可以直接继承得到。
foreach 方法以为遍历集合中的所有元素,并且应用传入的方法,f , 对每一个元素。 函数(或者方法,操作)的类型是Elem => U, Elem 是集合元素的类型 而 U是一个任意的结果类型. 函数的f的调用是他的一个副作用,事实上函数的结果都会被 foreach方法丢弃。
函数分类:Traversable 的方法可以分类如下:
Addition:
方法名: ++
说明: 同时追加两个traversable,或者追加一个迭代的所有元素到traversable
Map :
方法名: map, flatMap, collect
说明: 通过应用函数到集合的元素中,来产生一个新的集合
Conversions :
方法名:toArray, toList, toIterable, toSeq, toIndexedSeq, toStream, toSet,toMap
说明: 使得 Traversable 变的更加具体。所有这些转换返回的接收器的参数不会改变,如果集合的运行时类型已经匹配了要求的集合类型。 如: 在一个列表中应用 toList,将会调用该列表的 toList方法。
Copying operations :
方法名 : copyToBuffer, copyToArray
说明:作用如他们的名字
Size info:
方法名:isEmpty, nonEmpty, size, and hasDefiniteSize:
说明:作用如其名,唯一需要说明的是hasDefiniteSize ,判断一个集合是否有穷还是无穷
Element retrieval:
方法名:head, last, headOption, lastOption, and find.
说明: 头尾方法的定义. 但是有些集合不能很好的定义头尾方法。 如,hash存储是key,value, 又如某些运行时会不断改变元素顺序的。
Sub-collection retrieval operations :
方法名: tail, init, slice, take, drop, takeWhile,dropWhile, filter, filterNot, withFilter.
说明:返回子集合
Subdivision operations :
方法名: plitAt, span, partition, groupBy
说明:分割集合成几个子集合
Element tests:
方法名:exists, forall, count
说明:测试断言(书生:即方法做的事情)是否成立
Folds :
方法名:foldLeft, foldRight, /:, :\, reduceLeft, reduceRight
说明:用二进制的方式操作连续的元素
Specific folds :
方法名: sum, product, min, max
说明:用于特定类型,如数字
String :
方法名: mkString, addString, stringPrefix
说明:转换一个集合到字符串的方式
View:
方法名: view
说明:这个方法将单独介绍
Class Traversable中的方法
| WHAT IT IS | WHAT IT DOES |
|---|---|
| Abstract Method: | |
xs foreach f |
Executes function f for every element of xs. |
| Addition: | |
xs ++ ys |
A collection consisting of the elements of both xs and ys. ys is a TraversableOnce collection, i.e., either a Traversable or an Iterator. |
| Maps: | |
xs map f |
The collection obtained from applying the function f to every element in xs. |
xs flatMap f |
The collection obtained from applying the collection-valued function f to every element in xs and concatenating the results. |
xs collect f |
The collection obtained from applying the partial function f to every element in xs for which it is defined and collecting the results. |
| Conversions: | |
xs.toArray |
Converts the collection to an array. |
xs.toList |
Converts the collection to a list. |
xs.toIterable |
Converts the collection to an iterable. |
xs.toSeq |
Converts the collection to a sequence. |
xs.toIndexedSeq |
Converts the collection to an indexed sequence. |
xs.toStream |
Converts the collection to a lazily computed stream. |
xs.toSet |
Converts the collection to a set. |
xs.toMap |
Converts the collection of key/value pairs to a map. If the collection does not have pairs as elements, calling this operation results in a static type error. |
| Copying: | |
xs copyToBuffer buf |
Copies all elements of the collection to buffer buf. |
xs copyToArray(arr, s, n) |
Copies at most n elements of the collection to array arr starting at index s. The last two arguments are optional. |
| Size info: | |
xs.isEmpty |
Tests whether the collection is empty. |
xs.nonEmpty |
Tests whether the collection contains elements. |
xs.size |
The number of elements in the collection. |
xs.hasDefiniteSize |
True if xs is known to have finite size. |
| Element Retrieval: | |
xs.head |
The first element of the collection (or, some element, if no order is defined). |
xs.headOption |
The first element of xs in an option value, or None if xs is empty. |
xs.last |
The last element of the collection (or, some element, if no order is defined). |
xs.lastOption |
The last element of xs in an option value, or None if xs is empty. |
xs find p |
An option containing the first element in xs that satisfies p, or None if no element qualifies. |
| Subcollections: | |
xs.tail |
The rest of the collection except xs.head. |
xs.init |
The rest of the collection except xs.last. |
xs slice (from, to) |
A collection consisting of elements in some index range of xs (from from up to, and excluding to). |
xs take n |
A collection consisting of the first n elements of xs (or, some arbitrary n elements, if no order is defined). |
xs drop n |
The rest of the collection except xs take n. |
xs takeWhile p |
The longest prefix of elements in the collection that all satisfy p. |
xs dropWhile p |
The collection without the longest prefix of elements that all satisfy p. |
xs filter p |
The collection consisting of those elements of xs that satisfy the predicate p. |
xs withFilter p |
A non-strict filter of this collection. Subsequent calls to map, flatMap, foreach, and withFilter will only apply to those elements of xs for which the condition p is true. |
xs filterNot p |
The collection consisting of those elements of xs that do not satisfy the predicate p. |
| Subdivisions: | |
xs splitAt n |
Split xs at a position, giving the pair of collections (xs take n, xs drop n). |
xs span p |
Split xs according to a predicate, giving the pair of collections (xs takeWhile p, xs.dropWhile p). |
xs partition p |
Split xs into a pair of two collections; one with elements that satisfy the predicate p, the other with elements that do not, giving the pair of collections (xs filter p, xs.filterNot p) |
xs groupBy f |
Partition xs into a map of collections according to a discriminator function f. |
| Element Conditions: | |
xs forall p |
A boolean indicating whether the predicate p holds for all elements of xs. |
xs exists p |
A boolean indicating whether the predicate p holds for some element in xs. |
xs count p |
The number of elements in xs that satisfy the predicate p. |
| Folds: | |
(z /: xs)(op) |
Apply binary operation op between successive elements of xs, going left to right and starting with z. |
(xs :\ z)(op) |
Apply binary operation op between successive elements of xs, going right to left and starting with z. |
xs.foldLeft(z)(op) |
Same as (z /: xs)(op). |
xs.foldRight(z)(op) |
Same as (xs :\ z)(op). |
xs reduceLeft op |
Apply binary operation op between successive elements of non-empty collection xs, going left to right. |
xs reduceRight op |
Apply binary operation op between successive elements of non-empty collection xs, going right to left. |
| Specific Folds: | |
xs.sum |
The sum of the numeric element values of collection xs. |
xs.product |
The product of the numeric element values of collection xs. |
xs.min |
The minimum of the ordered element values of collection xs. |
xs.max |
The maximum of the ordered element values of collection xs. |
| Strings: | |
xs addString (b, start, sep, end) |
Adds a string to StringBuilder b that shows all elements of xs between separators sep enclosed in strings start and end. start, sep, end are all optional. |
xs mkString (start, sep, end) |
Converts the collection to a string that shows all elements of xs between separators sep enclosed in strings start and end. start, sep, end are all optional. |
xs.stringPrefix |
The collection name at the beginning of the string returned from xs.toString. |
| Views: | |
xs.view |
Produces a view over xs. |
xs view (from, to) |
Produces a view that represents the elements in some index range of xs. |