Strict, finite sequence of values that allows index-based random access of elements.
Strict, finite sequence of values that allows index-based random access of elements.
Chunk
s can be created from a variety of collection types using methods on the Chunk
companion
(e.g., Chunk.array
, Chunk.seq
, Chunk.vector
).
Chunks can be appended via the ++
method. The returned chunk is a composite of the input
chunks -- that is, there's no copying of the source chunks. For example, Chunk(1, 2) ++ Chunk(3, 4) ++ Chunk(5, 6)
returns a Chunk.Queue(Chunk(1, 2), Chunk(3, 4), Chunk(5, 6))
. As a result, indexed based lookup of
an appended chunk is O(number of underlying chunks)
. In the worse case, where each constituent chunk
has size 1, indexed lookup is O(size)
. To restore O(1)
lookup, call compact
, which copies all the underlying
chunk elements to a single array backed chunk. Note compact
requires a ClassTag
of the element type.
Alternatively, a collection of chunks can be directly copied to a new array backed chunk via
Chunk.concat(chunks)
. Like compact
, Chunk.concat
requires a ClassTag
for the element type.
Various subtypes of Chunk
are exposed for efficiency reasons:
Chunk.Singleton
Chunk.ArraySlice
Chunk.Queue
In particular, calling .toArraySlice
on a chunk returns a Chunk.ArraySlice
, which provides
access to the underlying backing array, along with an offset and length, referring to a slice
of that array.
- Companion
- object
Value members
Abstract methods
Returns the element at the specified index. Throws if index is < 0 or >= size.
Returns the element at the specified index. Throws if index is < 0 or >= size.
Copies the elements of this chunk in to the specified array at the specified start index.
Copies the elements of this chunk in to the specified array at the specified start index.
Concrete methods
Returns a chunk which consists of the elements of this chunk and the elements of the supplied chunk. This operation is amortized O(1).
Returns a chunk which consists of the elements of this chunk and the elements of the supplied chunk. This operation is amortized O(1).
More efficient version of filter(pf.isDefinedAt).map(pf)
.
More efficient version of filter(pf.isDefinedAt).map(pf)
.
Converts this chunk to a chunk backed by a single array.
Converts this chunk to a chunk backed by a single array.
Drops the right-most n
elements of this chunk queue in a way that preserves chunk structure.
Drops the right-most n
elements of this chunk queue in a way that preserves chunk structure.
Returns a chunk that has only the elements that satisfy the supplied predicate.
Returns a chunk that has only the elements that satisfy the supplied predicate.
Returns the first element for which the predicate returns true or None
if no elements satisfy the predicate.
Returns the first element for which the predicate returns true or None
if no elements satisfy the predicate.
Maps f
over the elements of this chunk and concatenates the result.
Maps f
over the elements of this chunk and concatenates the result.
Returns true if the predicate passes for all elements.
Returns true if the predicate passes for all elements.
Invokes the supplied function for each element of this chunk.
Invokes the supplied function for each element of this chunk.
Returns the index of the first element which passes the specified predicate (i.e., p(i) == true
)
or None
if no elements pass the predicate.
Returns the index of the first element which passes the specified predicate (i.e., p(i) == true
)
or None
if no elements pass the predicate.
Creates an iterator that iterates the elements of this chunk. The returned iterator is not thread safe.
Creates an iterator that iterates the elements of this chunk. The returned iterator is not thread safe.
Creates a new chunk by applying f
to each element in this chunk.
Creates a new chunk by applying f
to each element in this chunk.
Maps the supplied stateful function over each element, outputting the final state and the accumulated outputs.
The first invocation of f
uses init
as the input state value. Each successive invocation uses
the output state of the previous invocation.
Maps the supplied stateful function over each element, outputting the final state and the accumulated outputs.
The first invocation of f
uses init
as the input state value. Each successive invocation uses
the output state of the previous invocation.
Maps the supplied function over each element and returns a chunk of just the defined results.
Maps the supplied function over each element and returns a chunk of just the defined results.
Creates an iterator that iterates the elements of this chunk in reverse order. The returned iterator is not thread safe.
Creates an iterator that iterates the elements of this chunk in reverse order. The returned iterator is not thread safe.
Like foldLeft
but emits each intermediate result of f
.
Like foldLeft
but emits each intermediate result of f
.
Like scanLeft
except the final element is emitted as a standalone value instead of as
the last element of the accumulated chunk.
Like scanLeft
except the final element is emitted as a standalone value instead of as
the last element of the accumulated chunk.
Equivalent to val b = a.scanLeft(z)(f); val (c, carry) = b.splitAt(b.size - 1)
.
Splits this chunk in to two chunks at the specified index.
Splits this chunk in to two chunks at the specified index.
Check to see if this starts with the items in the given seq should be the same as take(seq.size).toChunk == Chunk.seq(seq).
Check to see if this starts with the items in the given seq should be the same as take(seq.size).toChunk == Chunk.seq(seq).
Takes the right-most n
elements of this chunk queue in a way that preserves chunk structure.
Takes the right-most n
elements of this chunk queue in a way that preserves chunk structure.
Zips this chunk the the supplied chunk, returning a chunk of tuples.
Zips this chunk the the supplied chunk, returning a chunk of tuples.
Zips this chunk with the supplied chunk, passing each pair to f
, resulting in
an output chunk.
Zips this chunk with the supplied chunk, passing each pair to f
, resulting in
an output chunk.
Zips the elements of the input chunk with its indices, and returns the new chunk.
Zips the elements of the input chunk with its indices, and returns the new chunk.
- Example
scala> Chunk("The", "quick", "brown", "fox").zipWithIndex.toList res0: List[(String, Int)] = List((The,0), (quick,1), (brown,2), (fox,3))