abstract class Chunk[+O] extends Serializable with ChunkPlatform[O]
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.
- Self Type
- Chunk[O]
- Source
- Chunk.scala
- Alphabetic
- By Inheritance
- Chunk
- ChunkPlatform
- Serializable
- Serializable
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
- new Chunk()
Abstract Value Members
-
abstract
def
apply(i: Int): O
Returns the element at the specified index.
Returns the element at the specified index. Throws if index is < 0 or >= size.
-
abstract
def
copyToArray[O2 >: O](xs: Array[O2], start: Int = 0): Unit
Copies the elements of this chunk in to the specified array at the specified start index.
-
abstract
def
size: Int
Returns the number of elements in this chunk.
-
abstract
def
splitAtChunk_(n: Int): (Chunk[O], Chunk[O])
Splits this chunk in to two chunks at the specified index
n
, which is guaranteed to be in-bounds.Splits this chunk in to two chunks at the specified index
n
, which is guaranteed to be in-bounds.- Attributes
- protected
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
def
++[O2 >: O](that: Chunk[O2]): Chunk[O2]
Returns a chunk which consists of the elements of this chunk and the elements of the supplied chunk.
Returns a chunk which consists of the elements of this chunk and the elements of the supplied chunk. This operation is amortized O(1).
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native() @HotSpotIntrinsicCandidate()
-
def
collect[O2](pf: PartialFunction[O, O2]): Chunk[O2]
More efficient version of
filter(pf.isDefinedAt).map(pf)
. -
def
compact[O2 >: O](implicit ct: ClassTag[O2]): ArraySlice[O2]
Converts this chunk to a chunk backed by a single array.
-
def
drop(n: Int): Chunk[O]
Drops the first
n
elements of this chunk. -
def
dropRight(n: Int): Chunk[O]
Drops the right-most
n
elements of this chunk queue in a way that preserves chunk structure. -
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(a: Any): Boolean
- Definition Classes
- Chunk → AnyRef → Any
-
def
filter(p: (O) ⇒ Boolean): Chunk[O]
Returns a chunk that has only the elements that satisfy the supplied predicate.
-
def
find(p: (O) ⇒ Boolean): Option[O]
Returns the first element for which the predicate returns true or
None
if no elements satisfy the predicate. -
def
flatMap[O2](f: (O) ⇒ Chunk[O2]): Chunk[O2]
Maps
f
over the elements of this chunk and concatenates the result. -
def
foldLeft[A](init: A)(f: (A, O) ⇒ A): A
Left-folds the elements of this chunk.
-
def
forall(p: (O) ⇒ Boolean): Boolean
Returns true if the predicate passes for all elements.
-
def
foreach(f: (O) ⇒ Unit): Unit
Invokes the supplied function for each element of this chunk.
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
-
def
hashCode(): Int
- Definition Classes
- Chunk → AnyRef → Any
-
def
head: Option[O]
Gets the first element of this chunk.
-
def
indexWhere(p: (O) ⇒ Boolean): Option[Int]
Returns the index of the first element which passes the specified predicate (i.e.,
p(i) == true
) orNone
if no elements pass the predicate. -
final
def
isEmpty: Boolean
True if size is zero, false otherwise.
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
iterator: Iterator[O]
Creates an iterator that iterates the elements of this chunk.
Creates an iterator that iterates the elements of this chunk. The returned iterator is not thread safe.
-
def
last: Option[O]
Gets the last element of this chunk.
-
def
map[O2](f: (O) ⇒ O2): Chunk[O2]
Creates a new chunk by applying
f
to each element in this chunk. -
def
mapAccumulate[S, O2](init: S)(f: (S, O) ⇒ (S, O2)): (S, Chunk[O2])
Maps the supplied stateful function over each element, outputting the final state and the accumulated outputs.
Maps the supplied stateful function over each element, outputting the final state and the accumulated outputs. The first invocation of
f
usesinit
as the input state value. Each successive invocation uses the output state of the previous invocation. -
def
mapFilter[O2](f: (O) ⇒ Option[O2]): Chunk[O2]
Maps the supplied function over each element and returns a chunk of just the defined results.
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
nonEmpty: Boolean
False if size is zero, true otherwise.
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
-
def
reverseIterator: Iterator[O]
Creates an iterator that iterates the elements of this chunk in reverse order.
Creates an iterator that iterates the elements of this chunk in reverse order. The returned iterator is not thread safe.
-
def
scanLeft[O2](z: O2)(f: (O2, O) ⇒ O2): Chunk[O2]
Like
foldLeft
but emits each intermediate result off
. -
def
scanLeftCarry[O2](z: O2)(f: (O2, O) ⇒ O2): (Chunk[O2], O2)
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)
. -
def
scanLeft_[O2](z: O2, emitZero: Boolean)(f: (O2, O) ⇒ O2): (Chunk[O2], O2)
- Attributes
- protected
-
def
splitAt(n: Int): (Chunk[O], Chunk[O])
Splits this chunk in to two chunks at the specified index.
-
def
startsWith[O2 >: O](seq: Seq[O2]): Boolean
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).
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
take(n: Int): Chunk[O]
Takes the first
n
elements of this chunk. -
def
takeRight(n: Int): Chunk[O]
Takes the right-most
n
elements of this chunk queue in a way that preserves chunk structure. -
def
toArray[O2 >: O](implicit arg0: ClassTag[O2]): Array[O2]
Copies the elements of this chunk to an array.
- def toArraySlice[O2 >: O](implicit ct: ClassTag[O2]): ArraySlice[O2]
-
def
toBitVector[B >: O](implicit ev: =:=[B, Byte]): BitVector
Converts this chunk to a scodec-bits BitVector.
-
def
toByteBuffer[B >: O](implicit ev: =:=[B, Byte]): ByteBuffer
Converts this chunk to a
java.nio.ByteBuffer
. -
def
toByteVector[B >: O](implicit ev: =:=[B, Byte]): ByteVector
Converts this chunk to a scodec-bits ByteVector.
-
def
toChain: Chain[O]
Converts this chunk to a chain.
-
def
toList: List[O]
Converts this chunk to a list.
-
def
toNel: Option[NonEmptyList[O]]
Converts this chunk to a NonEmptyList
-
def
toString(): String
- Definition Classes
- Chunk → AnyRef → Any
-
def
toVector: Vector[O]
Converts this chunk to a vector.
- def traverse[F[_], O2](f: (O) ⇒ F[O2])(implicit F: Applicative[F]): F[Chunk[O2]]
- def traverseFilter[F[_], O2](f: (O) ⇒ F[Option[O2]])(implicit F: Applicative[F]): F[Chunk[O2]]
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
def
zip[O2](that: Chunk[O2]): Chunk[(O, O2)]
Zips this chunk the the supplied chunk, returning a chunk of tuples.
-
def
zipWith[O2, O3](that: Chunk[O2])(f: (O, O2) ⇒ O3): Chunk[O3]
Zips this chunk with the supplied chunk, passing each pair to
f
, resulting in an output chunk. -
def
zipWithIndex: Chunk[(O, Int)]
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.
scala> Chunk("The", "quick", "brown", "fox").zipWithIndex.toList res0: List[(String, Int)] = List((The,0), (quick,1), (brown,2), (fox,3))
Example:
Deprecated Value Members
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] ) @Deprecated
- Deprecated