As part of this topic let us get started with collections.
Here is the official documentation link – http://docs.scala-lang.org/overviews/collections/introduction
Scala Collections are
- Easy to use
- Concise
- Safe
- Fast
- Universal
Example val (even, odd) = (0 to 100).toList.partition (_ % 2 == 0)
Here is the high level hierarchy of Scala Collections. All these are traits with one or more abstract methods.
- Traversable is a trait with functionality of many common actions on collection.
- Only abstract method of Traversable is foreach
- Implementation for foreach is provided as part of Iterable
- Iterator is abstract method in Iterable
- Seq, Set and Map are sub traits of Iterable for specific purposes we will see those later
- Some of the concrete classes under each of the category are mutable while others are immutable
- scala.collection is the main package and it have sub packages for mutable and immutable collections
- As part of this lesson we will also look at tuples – another very important data structure for Spark
- Here are the list of methods of trait 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 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 . |
- Here are the list of methods from trait Iterable
WHAT IT IS | WHAT IT DOES |
---|---|
Abstract Method: | |
xs.iterator |
An iterator that yields every element in xs , in the same order as foreach traverses elements. |
Other Iterators: | |
xs grouped size |
An iterator that yields fixed-sized “chunks” of this collection. |
xs sliding size |
An iterator that yields a sliding fixed-sized window of elements in this collection. |
Subcollections: | |
xs takeRight n |
A collection consisting of the last n elements of xs (or, some arbitrary n elements, if no order is defined). |
xs dropRight n |
The rest of the collection except xs takeRight n . |
Zippers: | |
xs zip ys |
An iterable of pairs of corresponding elements from xs and ys . |
xs zipAll (ys, x, y) |
An iterable of pairs of corresponding elements from xs and ys , where the shorter sequence is extended to match the longer one by appending elements x or y . |
xs.zipWithIndex |
An iterable of pairs of elements from xs with their indices. |
Comparison: | |
xs sameElements ys |
A test whether xs and ys contain the same elements in the same order |
Start the discussion at discuss.itversity.com