Immutable, strict, finite sequence of values that supports efficient index-based random access of elements, is memory efficient for all sizes, and avoids unnecessary copying.
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 amortized O(log2(number of underlying chunks))
. In the worst case, where each constituent chunk has size 1, indexed lookup is O(log2(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.
Attributes
- Companion
- object
- Source
- Chunk.scala
- Graph
-
- Supertypes
-
trait Serializableclass Objecttrait Matchableclass Any
- Known subtypes
-
class ArraySlice[O]class ByteBufferclass CharBufferclass Constant[A]class IArraySlice[O]class Queue[O]class Singleton[O]Show all
- Self type
-
Chunk[O]
Members list
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.
Attributes
- Source
- Chunk.scala
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.
Attributes
- Source
- Chunk.scala
Returns the number of elements in this chunk.
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).
Attributes
- Source
- Chunk.scala
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.
Alternatively, call toIndexedChunk
to get back a chunk with guaranteed O(1) indexed lookup while also minimizing copying.
Attributes
- Source
- Chunk.scala
Drops the first n
elements of this chunk.
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.
Attributes
- Source
- Chunk.scala
Compares the receiver object (this
) with the argument object (that
) for equivalence.
Compares the receiver object (this
) with the argument object (that
) for equivalence.
Any implementation of this method should be an equivalence relation:
- It is reflexive: for any instance
x
of typeAny
,x.equals(x)
should returntrue
. - It is symmetric: for any instances
x
andy
of typeAny
,x.equals(y)
should returntrue
if and only ify.equals(x)
returnstrue
. - It is transitive: for any instances
x
,y
, andz
of typeAny
ifx.equals(y)
returnstrue
andy.equals(z)
returnstrue
, thenx.equals(z)
should returntrue
.
If you override this method, you should verify that your implementation remains an equivalence relation. Additionally, when overriding this method it is usually necessary to override hashCode
to ensure that objects which are "equal" (o1.equals(o2)
returns true
) hash to the same scala.Int. (o1.hashCode.equals(o2.hashCode)
).
Value parameters
- that
-
the object to compare against this object for equality.
Attributes
- Returns
-
true
if the receiver object is equivalent to the argument;false
otherwise. - Definition Classes
-
Any
- Source
- Chunk.scala
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.
Attributes
- Source
- Chunk.scala
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.
Attributes
- Source
- Chunk.scala
Maps f
over the elements of this chunk and concatenates the result.
Left-folds the elements of this chunk.
Returns true if the predicate passes for all elements.
Invokes the supplied function for each element of this chunk.
Like foreach
but includes the index of the element.
Calculate a hash code value for the object.
Calculate a hash code value for the object.
The default hashing algorithm is platform dependent.
Note that it is allowed for two objects to have identical hash codes (o1.hashCode.equals(o2.hashCode)
) yet not be equal (o1.equals(o2)
returns false
). A degenerate implementation could always return 0
. However, it is required that if two objects are equal (o1.equals(o2)
returns true
) that they have identical hash codes (o1.hashCode.equals(o2.hashCode)
). Therefore, when overriding this method, be sure to verify that the behavior is consistent with the equals
method.
Attributes
- Returns
-
the hash code value for this object.
- Definition Classes
-
Any
- Source
- Chunk.scala
Gets the first 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.
Attributes
- Source
- Chunk.scala
True if size is zero, false otherwise.
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.
Attributes
- Source
- Chunk.scala
Gets the last element of 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.
Attributes
- Source
- Chunk.scala
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.
Attributes
- Source
- Chunk.scala
False if size is zero, true otherwise.
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.
Attributes
- Source
- Chunk.scala
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)
.
Attributes
- Source
- Chunk.scala
Splits this chunk in to two chunks at the specified index.
Check to see if this starts with the items in the given chunk.
Check to see if this starts with the items in the given seq.
Takes the first n
elements of this chunk.
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.
Attributes
- Source
- Chunk.scala
Converts this chunk to a new collection using the supplied collector.
Converts this chunk to a new collection using the supplied collector.
Attributes
- Example
-
scala> Chunk(1, 2, 3).to(Set)
- Source
- Chunk.scala
Copies the elements of this chunk to an array.
Converts this chunk to a Chunk.ArraySlice
.
Converts this chunk to a scodec-bits BitVector.
Converts this chunk to a java.nio.ByteBuffer
.
Converts this chunk to a java.nio.ByteBuffer
.
Attributes
- Note
-
that even "read-only" interaction with a
ByteBuffer
may increment itsposition
, so this method should be considered as unsafely allocating mutable state. - Source
- Chunk.scala
Converts this chunk to a scodec-bits ByteVector.
Converts this chunk to a chain.
Converts this chunk to a java.nio.CharBuffer
.
Converts this chunk to a java.nio.CharBuffer
.
Attributes
- Note
-
that even "read-only" interaction with a
CharBuffer
may increment its position, so this method should be considered as unsafely allocating mutable state. - Source
- Chunk.scala
Returns a chunk with guaranteed O(1) lookup by index.
Returns a chunk with guaranteed O(1) lookup by index.
Unlike compact
, this operation does not copy any elements unless this chunk does not provide O(1) lookup by index -- e.g., a chunk built via 1 or more usages of ++
.
Attributes
- Source
- Chunk.scala
Converts this chunk to a list.
Converts this chunk to a NonEmptyList
Returns a string representation of the object.
Returns a string representation of the object.
The default representation is platform dependent.
Attributes
- Returns
-
a string representation of the object.
- Definition Classes
-
Any
- Source
- Chunk.scala
Converts this chunk to a vector.
Attributes
- Source
- Chunk.scala
Attributes
- Source
- Chunk.scala
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.
Attributes
- Source
- Chunk.scala
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.
Attributes
- Example
-
scala> Chunk("The", "quick", "brown", "fox").zipWithIndex.toList res0: List[(String, Int)] = List((The,0), (quick,1), (brown,2), (fox,3))
- Source
- Chunk.scala
Deprecated methods
Like compact
but does not require a ClassTag
. Elements are boxed and stored in an Array[Any]
.
Like compact
but does not require a ClassTag
. Elements are boxed and stored in an Array[Any]
.
Attributes
- Deprecated
- true
- Source
- Chunk.scala
Inherited methods
Attributes
- Inherited from:
- ChunkPlatform (hidden)
- Source
- ChunkPlatform.scala
Attributes
- Inherited from:
- ChunkPlatform (hidden)
- Source
- ChunkPlatform.scala
Attributes
- Inherited from:
- ChunkPlatform (hidden)
- Source
- ChunkPlatform.scala
Attributes
- Inherited from:
- ChunkPlatform (hidden)
- Source
- ChunkPlatform.scala