trait IterableOps[+A, +CC[X], +C] extends Any
Base trait for Iterable operations
VarianceNote
We require that for all child classes of Iterable the variance of
the child class and the variance of the C parameter passed to IterableOps
are the same. We cannot express this since we lack variance polymorphism. That's
why we have to resort at some places to write C[A @uncheckedVariance].
- CC
type constructor of the collection (e.g.
List,Set). Operations returning a collection with a different type of elementB(e.g.map) return aCC[B].- C
type of the collection (e.g.
List[Int],String,BitSet). Operations returning a collection with the same type of element (e.g.drop,filter) return aC.
- Alphabetic
- By Inheritance
- IterableOps
- Any
- Hide All
- Show All
- Public
- All
Type Members
-
class
WithFilter
extends collection.WithFilter[A, CC]
A template trait that contains just the
map,flatMap,foreachandwithFiltermethods of traitIterable.
Abstract Value Members
-
abstract
def
coll: C
- returns
This collection as a
C.
- Attributes
- protected[this]
-
abstract
def
fromSpecificIterable(coll: Iterable[A]): C
- Attributes
- protected[this]
-
abstract
def
getClass(): Class[_]
- Definition Classes
- Any
- abstract def iterableFactory: IterableFactoryLike[CC]
-
abstract
def
newSpecificBuilder(): Builder[A, C]
- returns
a strict builder for the same collection type. Note that in the case of lazy collections (e.g. View or immutable.LazyList), it is possible to implement this method but the resulting
Builderwill break laziness. As a consequence, operations should preferably be implemented on top of views rather than builders.
- Attributes
- protected[this]
-
abstract
def
toIterable: Iterable[A]
- returns
This collection as an
Iterable[A]. No new collection will be built ifthisis already anIterable[A].
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- Any
-
final
def
##(): Int
- Definition Classes
- Any
-
final
def
++[B >: A](suffix: Iterable[B]): CC[B]
Alias for
concatAlias for
concat- Annotations
- @inline()
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
className: String
The class name of this collection.
The class name of this collection. To be used for converting to string. Collections generally print like this:
<className>(elem_1, ..., elem_n)
- def collect[B](pf: PartialFunction[A, B]): CC[B]
-
def
collectFirst[B](pf: PartialFunction[A, B]): Option[B]
Finds the first element of the $coll for which the given partial function is defined, and applies the partial function to it.
Finds the first element of the $coll for which the given partial function is defined, and applies the partial function to it.
$mayNotTerminateInf $orderDependent
- pf
the partial function
- returns
an option value containing pf applied to the first value for which it is defined, or
Noneif none exists.
Seq("a", 1, 5L).collectFirst({ case x: Int => x*10 }) = Some(10)
Example: -
final
def
concat[B >: A](suffix: Iterable[B]): CC[B]
- Annotations
- @inline()
-
def
copyToArray[B >: A](xs: Array[B], start: Int = 0): xs.type
Copy all elements of this collection to array
xs, starting atstart. -
def
count(p: (A) ⇒ Boolean): Int
Counts the number of elements in the $coll which satisfy a predicate.
Counts the number of elements in the $coll which satisfy a predicate.
- p
the predicate used to test elements.
- returns
the number of elements satisfying the predicate
p.
-
def
drop(n: Int): C
The rest of the collection without its
nfirst elements.The rest of the collection without its
nfirst elements. For linear, immutable collections this should avoid making a copy. -
def
dropRight(n: Int): C
The rest of the collection without its
nlast elements.The rest of the collection without its
nlast elements. For linear, immutable collections this should avoid making a copy. -
def
dropWhile(p: (A) ⇒ Boolean): C
Skips longest sequence of elements of this iterator which satisfy given predicate
p, and returns an iterator of the remaining elements.Skips longest sequence of elements of this iterator which satisfy given predicate
p, and returns an iterator of the remaining elements.- p
the predicate used to skip elements.
- returns
an iterator consisting of the remaining elements
- Note
Reuse: $consumesAndProducesIterator
-
def
equals(arg0: Any): Boolean
- Definition Classes
- Any
-
def
exists(p: (A) ⇒ Boolean): Boolean
Tests whether a predicate holds for at least one element of this $coll.
Tests whether a predicate holds for at least one element of this $coll.
$mayNotTerminateInf
- p
the predicate used to test elements.
- returns
trueif the given predicatepis satisfied by at least one element of this $coll, otherwisefalse
-
def
filter(pred: (A) ⇒ Boolean): C
Selects all elements of this $coll which satisfy a predicate.
Selects all elements of this $coll which satisfy a predicate.
- pred
the predicate used to test elements.
- returns
a new $coll consisting of all elements of this $coll that satisfy the given predicate
pred. Their order may not be preserved.
-
def
filterNot(pred: (A) ⇒ Boolean): C
Selects all elements of this $coll which do not satisfy a predicate.
Selects all elements of this $coll which do not satisfy a predicate.
- pred
the predicate used to test elements.
- returns
a new $coll consisting of all elements of this $coll that do not satisfy the given predicate
pred. Their order may not be preserved.
-
def
find(p: (A) ⇒ Boolean): Option[A]
Finds the first element of the $coll satisfying a predicate, if any.
Finds the first element of the $coll satisfying a predicate, if any.
$mayNotTerminateInf $orderDependent
- p
the predicate used to test elements.
- returns
an option value containing the first element in the $coll that satisfies
p, orNoneif none exists.
-
def
flatMap[B](f: (A) ⇒ IterableOnce[B]): CC[B]
Flatmap
- def flatten[B](implicit ev: (A) ⇒ IterableOnce[B]): CC[B]
-
def
foldLeft[B](z: B)(op: (B, A) ⇒ B): B
Fold left
-
def
foldRight[B](z: B)(op: (A, B) ⇒ B): B
Fold right
-
def
forall(p: (A) ⇒ Boolean): Boolean
Tests whether a predicate holds for all elements of this $coll.
Tests whether a predicate holds for all elements of this $coll.
$mayNotTerminateInf
- p
the predicate used to test elements.
- returns
trueif this $coll is empty or the given predicatepholds for all elements of this $coll, otherwisefalse.
-
def
foreach[U](f: (A) ⇒ U): Unit
Apply
fto each element for its side effects Note: [U] parameter needed to help scalac's type inference. -
def
fromIterable[E](it: Iterable[E]): CC[E]
- Attributes
- protected[this]
-
def
groupBy[K](f: (A) ⇒ K): immutable.Map[K, C]
Partitions this $coll into a map of ${coll}s according to some discriminator function.
Partitions this $coll into a map of ${coll}s according to some discriminator function.
Note: When applied to a view or a lazy collection it will always force the elements.
- K
the type of keys returned by the discriminator function.
- f
the discriminator function.
- returns
A map from keys to ${coll}s such that the following invariant holds:
(xs groupBy f)(k) = xs filter (x => f(x) == k)That is, every key
kis bound to a $coll of those elementsxfor whichf(x)equalsk.
-
def
groupMap[K, B](key: (A) ⇒ K)(f: (A) ⇒ B): immutable.Map[K, CC[B]]
Partitions this $coll into a map of ${coll}s according to a discriminator function
key.Partitions this $coll into a map of ${coll}s according to a discriminator function
key. Each element in a group is transformed into a value of typeBusing thevaluefunction.It is equivalent to
groupBy(key).mapValues(_.map(f)), but more efficient.case class User(name: String, age: Int) def namesByAge(users: Seq[User]): Map[Int, Seq[String]] = users.groupMap(_.age)(_.name)
- K
the type of keys returned by the discriminator function
- B
the type of values returned by the transformation function
- key
the discriminator function
- f
the element transformation function
-
def
groupMapReduce[K, B](key: (A) ⇒ K)(f: (A) ⇒ B)(reduce: (B, B) ⇒ B): immutable.Map[K, B]
Partitions this $coll into a map according to a discriminator function
key.Partitions this $coll into a map according to a discriminator function
key. All the values that have the same discriminator are then transformed by thevaluefunction and then reduced into a single value with thereducefunction.It is equivalent to
groupBy(key).mapValues(_.map(f).reduce(reduce)), but more efficient.def occurrences[A](as: Seq[A]): Map[A, Int] = as.groupMapReduce(identity)(_ => 1)(_ + _)
-
def
grouped(size: Int): Iterator[C]
Partitions elements in fixed size ${coll}s.
Partitions elements in fixed size ${coll}s.
- size
the number of elements per group
- returns
An iterator producing ${coll}s of size
size, except the last will be less than sizesizeif the elements don't divide evenly.
- See also
scala.collection.Iterator, method
grouped
-
def
hashCode(): Int
- Definition Classes
- Any
-
def
head: A
The first element of the collection.
-
def
init: C
The initial part of the collection without its last element.
-
def
isEmpty: Boolean
Is the collection empty?
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
knownSize: Int
The number of elements in this collection, if it can be cheaply computed, -1 otherwise.
The number of elements in this collection, if it can be cheaply computed, -1 otherwise. Cheaply usually means: Not requiring a collection traversal.
-
def
last: A
Selects the last element.
Selects the last element. $orderDependent
- returns
The last element of this $coll.
- Exceptions thrown
NoSuchElementExceptionIf the $coll is empty.
-
def
lastOption: Option[A]
Optionally selects the last element.
Optionally selects the last element. $orderDependent
- returns
the last element of this $coll$ if it is nonempty,
Noneif it is empty.
-
def
map[B](f: (A) ⇒ B): CC[B]
Builds a new collection by applying a function to all elements of this $coll.
Builds a new collection by applying a function to all elements of this $coll.
- B
the element type of the returned collection.
- f
the function to apply to each element.
- returns
a new $coll resulting from applying the given function
fto each element of this $coll and collecting the results.
-
def
max: A
[use case] Finds the largest element.
[use case]Finds the largest element.
- returns
the largest element of this $coll.
Full Signaturedef max[B >: A](implicit ord: Ordering[B]): A
-
def
maxBy[B](f: (A) ⇒ B): A
[use case] Finds the first element which yields the largest value measured by function f.
[use case]Finds the first element which yields the largest value measured by function f.
- B
The result type of the function f.
- f
The measuring function.
- returns
the first element of this $coll with the largest value measured by function f.
Full Signaturedef maxBy[B](f: (A) ⇒ B)(implicit cmp: Ordering[B]): A
-
def
min: A
[use case] Finds the smallest element.
[use case]Finds the smallest element.
- returns
the smallest element of this $coll
Full Signaturedef min[B >: A](implicit ord: Ordering[B]): A
-
def
minBy[B](f: (A) ⇒ B): A
[use case] Finds the first element which yields the smallest value measured by function f.
[use case]Finds the first element which yields the smallest value measured by function f.
- B
The result type of the function f.
- f
The measuring function.
- returns
the first element of this $coll with the smallest value measured by function f.
Full Signaturedef minBy[B](f: (A) ⇒ B)(implicit cmp: Ordering[B]): A
- def mkString: String
- def mkString(sep: String): String
-
def
mkString(start: String, sep: String, end: String): String
A string showing all elements of this collection, separated by string
sep. -
def
nonEmpty: Boolean
Is the collection not empty?
-
def
partition(p: (A) ⇒ Boolean): (C, C)
A pair of, first, all elements that satisfy prediacte
pand, second, all elements that do not.A pair of, first, all elements that satisfy prediacte
pand, second, all elements that do not. Interesting because it splits a collection in two.The default implementation provided here needs to traverse the collection twice. Strict collections have an overridden version of
partitioninBuildable, which requires only a single traversal. -
def
product: A
[use case] Multiplies up the elements of this collection.
[use case]Multiplies up the elements of this collection.
- returns
the product of all elements in this $coll of numbers of type
Int. Instead ofInt, any other typeTwith an implicitNumeric[T]implementation can be used as element type of the $coll and as result type ofproduct. Examples of such types are:Long,Float,Double,BigInt.
Full Signaturedef product[B >: A](implicit num: Numeric[B]): B
-
def
reduce[B >: A](op: (B, B) ⇒ B): B
Reduces the elements of this $coll using the specified associative binary operator.
Reduces the elements of this $coll using the specified associative binary operator.
$undefinedorder
- B
A type parameter for the binary operator, a supertype of
A.- op
A binary operator that must be associative.
- returns
The result of applying reduce operator
opbetween all the elements if the $coll is nonempty.
- Exceptions thrown
UnsupportedOperationExceptionif this $coll is empty.
-
def
reduceLeft[B >: A](op: (B, A) ⇒ B): B
Applies a binary operator to all elements of this $coll, going left to right.
Applies a binary operator to all elements of this $coll, going left to right. $willNotTerminateInf $orderDependentFold
- B
the result type of the binary operator.
- op
the binary operator.
- returns
the result of inserting
opbetween consecutive elements of this $coll, going left to right:op( op( ... op(x_1, x_2) ..., x_{n-1}), x_n)where
x1, ..., xnare the elements of this $coll.
- Exceptions thrown
UnsupportedOperationExceptionif this $coll is empty.
-
def
reduceLeftOption[B >: A](op: (B, A) ⇒ B): Option[B]
Optionally applies a binary operator to all elements of this $coll, going left to right.
Optionally applies a binary operator to all elements of this $coll, going left to right. $willNotTerminateInf $orderDependentFold
- B
the result type of the binary operator.
- op
the binary operator.
- returns
an option value containing the result of
reduceLeft(op)if this $coll is nonempty,Noneotherwise.
-
def
reduceOption[B >: A](op: (B, B) ⇒ B): Option[B]
Reduces the elements of this $coll, if any, using the specified associative binary operator.
Reduces the elements of this $coll, if any, using the specified associative binary operator.
$undefinedorder
- B
A type parameter for the binary operator, a supertype of
A.- op
A binary operator that must be associative.
- returns
An option value containing result of applying reduce operator
opbetween all the elements if the collection is nonempty, andNoneotherwise.
-
def
reduceRight[B >: A](op: (A, B) ⇒ B): B
Applies a binary operator to all elements of this $coll, going right to left.
Applies a binary operator to all elements of this $coll, going right to left. $willNotTerminateInf $orderDependentFold
- B
the result type of the binary operator.
- op
the binary operator.
- returns
the result of inserting
opbetween consecutive elements of this $coll, going right to left:op(x_1, op(x_2, ..., op(x_{n-1}, x_n)...))where
x1, ..., xnare the elements of this $coll.
- Exceptions thrown
UnsupportedOperationExceptionif this $coll is empty.
-
def
reduceRightOption[B >: A](op: (A, B) ⇒ B): Option[B]
Optionally applies a binary operator to all elements of this $coll, going right to left.
Optionally applies a binary operator to all elements of this $coll, going right to left. $willNotTerminateInf $orderDependentFold
- B
the result type of the binary operator.
- op
the binary operator.
- returns
an option value containing the result of
reduceRight(op)if this $coll is nonempty,Noneotherwise.
-
def
reversed: Iterable[A]
- Attributes
- protected[this]
-
def
scan[B >: A](z: B)(op: (B, B) ⇒ B): CC[B]
Computes a prefix scan of the elements of the collection.
Computes a prefix scan of the elements of the collection.
Note: The neutral element
zmay be applied more than once.- B
element type of the resulting collection
- z
neutral element for the operator
op- op
the associative operator for the scan
- returns
a new $coll containing the prefix scan of the elements in this $coll
-
def
scanLeft[B](z: B)(op: (B, A) ⇒ B): CC[B]
Produces a collection containing cumulative results of applying the operator going left to right.
Produces a collection containing cumulative results of applying the operator going left to right.
$willNotTerminateInf $orderDependent
- B
the type of the elements in the resulting collection
- z
the initial value
- op
the binary operator applied to the intermediate result and the element
- returns
collection with intermediate results
-
def
scanRight[B](z: B)(op: (A, B) ⇒ B): CC[B]
Produces a collection containing cumulative results of applying the operator going right to left.
Produces a collection containing cumulative results of applying the operator going right to left. The head of the collection is the last cumulative result. $willNotTerminateInf $orderDependent
Example:
List(1, 2, 3, 4).scanRight(0)(_ + _) == List(10, 9, 7, 4, 0)
- B
the type of the elements in the resulting collection
- z
the initial value
- op
the binary operator applied to the intermediate result and the element
- returns
collection with intermediate results
-
def
size: Int
The number of elements in this collection.
The number of elements in this collection. Does not terminate for infinite collections.
-
def
slice(from: Int, until: Int): C
Selects an interval of elements.
Selects an interval of elements. The returned collection is made up of all elements
xwhich satisfy the invariant:from <= indexOf(x) < until
$orderDependent
- from
the lowest index to include from this $coll.
- until
the lowest index to EXCLUDE from this $coll.
- returns
a $coll containing the elements greater than or equal to index
fromextending up to (but not including) indexuntilof this $coll.
-
def
sliding(size: Int, step: Int): Iterator[C]
Groups elements in fixed size blocks by passing a "sliding window" over them (as opposed to partitioning them, as is done in grouped.)
Groups elements in fixed size blocks by passing a "sliding window" over them (as opposed to partitioning them, as is done in grouped.)
- size
the number of elements per group
- step
the distance between the first elements of successive groups
- returns
An iterator producing ${coll}s of size
size, except the last element (which may be the only element) will be truncated if there are fewer thansizeelements remaining to be grouped.
- See also
scala.collection.Iterator, method
sliding
-
def
sliding(size: Int): Iterator[C]
Groups elements in fixed size blocks by passing a "sliding window" over them (as opposed to partitioning them, as is done in
grouped.) The "sliding window" step is set to one.Groups elements in fixed size blocks by passing a "sliding window" over them (as opposed to partitioning them, as is done in
grouped.) The "sliding window" step is set to one.- size
the number of elements per group
- returns
An iterator producing ${coll}s of size
size, except the last element (which may be the only element) will be truncated if there are fewer thansizeelements remaining to be grouped.
- See also
scala.collection.Iterator, method
sliding
-
def
span(p: (A) ⇒ Boolean): (C, C)
Splits this $coll into a prefix/suffix pair according to a predicate.
Splits this $coll into a prefix/suffix pair according to a predicate.
Note:
c span pis equivalent to (but possibly more efficient than)(c takeWhile p, c dropWhile p), provided the evaluation of the predicatepdoes not cause any side-effects. $orderDependent- p
the test predicate
- returns
a pair consisting of the longest prefix of this $coll whose elements all satisfy
p, and the rest of this $coll.
-
def
splitAt(n: Int): (C, C)
Splits this $coll into two at a given position.
Splits this $coll into two at a given position. Note:
c splitAt nis equivalent to (but possibly more efficient than)(c take n, c drop n). $orderDependent- n
the position at which to split.
- returns
a pair of ${coll}s consisting of the first
nelements of this $coll, and the other elements.
-
def
sum: A
[use case] Sums up the elements of this collection.
[use case]Sums up the elements of this collection.
- returns
the sum of all elements in this $coll of numbers of type
Int. Instead ofInt, any other typeTwith an implicitNumeric[T]implementation can be used as element type of the $coll and as result type ofsum. Examples of such types are:Long,Float,Double,BigInt.
Full Signaturedef sum[B >: A](implicit num: Numeric[B]): B
-
def
tail: C
The rest of the collection without its first element.
-
def
take(n: Int): C
A collection containing the first
nelements of this collection. -
def
takeRight(n: Int): C
A collection containing the last
nelements of this collection. -
def
takeWhile(p: (A) ⇒ Boolean): C
Takes longest prefix of elements that satisfy a predicate.
Takes longest prefix of elements that satisfy a predicate. $orderDependent
- p
The predicate used to test elements.
- returns
the longest prefix of this $coll whose elements all satisfy the predicate
p.
-
def
to[C1](factory: Factory[A, C1]): C1
Given a collection factory
factory, convert this collection to the appropriate representation for the current element typeA.Given a collection factory
factory, convert this collection to the appropriate representation for the current element typeA. Example uses:xs.to(List) xs.to(ArrayBuffer) xs.to(BitSet) // for xs: Iterable[Int]
-
def
toArray[B >: A](implicit arg0: ClassTag[B]): Array[B]
Convert collection to array.
-
def
toString(): String
- Definition Classes
- IterableOps → Any
-
def
unzip[A1, A2](implicit asPair: <:<[A, (A1, A2)]): (CC[A1], CC[A2])
Converts this $coll of pairs into two collections of the first and second half of each pair.
Converts this $coll of pairs into two collections of the first and second half of each pair.
val xs = $Coll( (1, "one"), (2, "two"), (3, "three")).unzip // xs == ($Coll(1, 2, 3), // $Coll(one, two, three))
- A1
the type of the first half of the element pairs
- A2
the type of the second half of the element pairs
- asPair
an implicit conversion which asserts that the element type of this $coll is a pair.
- returns
a pair of ${coll}s, containing the first, respectively second half of each element pair of this $coll.
-
def
view: View[A]
A view representing the elements of this collection.
-
def
withFilter(p: (A) ⇒ Boolean): collection.WithFilter[A, CC]
Creates a non-strict filter of this $coll.
Creates a non-strict filter of this $coll.
Note: the difference between
c filter pandc withFilter pis that the former creates a new collection, whereas the latter only restricts the domain of subsequentmap,flatMap,foreach, andwithFilteroperations. $orderDependent- p
the predicate used to test elements.
- returns
an object of class
WithFilter, which supportsmap,flatMap,foreach, andwithFilteroperations. All these operations apply to those elements of this $coll which satisfy the predicatep.
-
def
zip[B](xs: Iterable[B]): CC[(A, B)]
Returns a $coll formed from this $coll and another iterable collection by combining corresponding elements in pairs.
Returns a $coll formed from this $coll and another iterable collection by combining corresponding elements in pairs. If one of the two collections is longer than the other, its remaining elements are ignored.
- B
the type of the second half of the returned pairs
- xs
The iterable providing the second half of each result pair
- returns
a new collection of type
Thatcontaining pairs consisting of corresponding elements of this $coll andthat. The length of the returned collection is the minimum of the lengths of this $coll andthat.
-
def
zipWithIndex: CC[(A, Int)]
Zips this $coll with its indices.
Zips this $coll with its indices.
- returns
A new collection of type
Thatcontaining pairs consisting of all elements of this $coll paired with their index. Indices start at0.
List("a", "b", "c").zipWithIndex == List(("a", 0), ("b", 1), ("c", 2))
Example: