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 . |