Combiner

trait Combiner[-Elem, +To] extends Builder[Elem, To] with Sizing with Parallel

The base trait for all combiners. A combiner incremental collection construction just like a regular builder, but also implements an efficient merge operation of two builders via combine method. Once the collection is constructed, it may be obtained by invoking the result method.

The base trait for all combiners. A combiner incremental collection construction just like a regular builder, but also implements an efficient merge operation of two builders via combine method. Once the collection is constructed, it may be obtained by invoking the result method.

The complexity of the combine method should be less than linear for best performance. The result method doesn't have to be a constant time operation, but may be performed in parallel.

Type Params
Elem

the type of the elements added to the builder

To

the type of the collection the builder produces

trait Parallel
trait Sizing
trait Builder[Elem, To]
trait Growable[Elem]
trait Clearable
class Object
trait Matchable
class Any

Value members

Abstract methods

def combine[N <: Elem, NewTo >: To](other: Combiner[N, NewTo]): Combiner[N, NewTo]

Combines the contents of the receiver builder and the other builder, producing a new builder containing both their elements.

Combines the contents of the receiver builder and the other builder, producing a new builder containing both their elements.

This method may combine the two builders by copying them into a larger collection, by producing a lazy view that gets evaluated once result is invoked, or use a merge operation specific to the data structure in question.

Note that both the receiver builder and other builder become invalidated after the invocation of this method, and should be cleared (see clear) if they are to be used again.

Also, combining two combiners c1 and c2 for which c1 eq c2 is true, that is, they are the same objects in memory:

c1.combine(c2)

always does nothing and returns c1.

Type Params
N

the type of elements contained by the other builder

NewTo

the type of collection produced by the other builder

Value Params
other

the other builder

Returns

the parallel builder containing both the elements of this and the other builder

Concrete methods

def canBeShared: Boolean

Returns true if this combiner has a thread-safe += and is meant to be shared across several threads constructing the collection.

Returns true if this combiner has a thread-safe += and is meant to be shared across several threads constructing the collection.

By default, this method returns false.

def fromSequential(seq: IterableOnce[Elem]): To

Add all elements from a sequential collection and return the result.

Add all elements from a sequential collection and return the result.

Constructs the result and sets the appropriate tasksupport object to the resulting collection if this is applicable.

Constructs the result and sets the appropriate tasksupport object to the resulting collection if this is applicable.

Inherited methods

@inline
final def ++=(xs: IterableOnce[Elem]): Combiner[Elem, To]
Inherited from
Growable
@inline
final def +=(elem: Elem): Combiner[Elem, To]
Inherited from
Growable
def addAll(xs: IterableOnce[Elem]): Combiner[Elem, To]
Inherited from
Growable
def addOne(elem: Elem): Combiner[Elem, To]
Inherited from
Growable
def clear(): Unit
Inherited from
Builder
def knownSize: Int
Inherited from
Growable
def mapResult[NewTo](f: To => NewTo): Builder[Elem, NewTo]
Inherited from
Builder
def result(): To
Inherited from
Builder
def size: Int
Inherited from
Sizing
final def sizeHint(coll: IterableOnce[_], delta: Int): Unit
Inherited from
Builder
def sizeHint(size: Int): Unit
Inherited from
Builder
final def sizeHintBounded(size: Int, boundingColl: Iterable[_]): Unit
Inherited from
Builder

Deprecated and Inherited methods

@inline @deprecated("Use `++=` aka `addAll` instead of varargs `+=`; infix operations with an operand of multiple args will be deprecated", "2.13.0")
final def +=(elem1: Elem, elem2: Elem, elems: Elem*): Combiner[Elem, To]
Deprecated
Inherited from
Growable

Concrete fields

@transient @volatile