Packages

abstract class Chunk[+O] extends Serializable with ChunkPlatform[O] with ChunkRuntimePlatform[O]

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.

Chunks 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.

Self Type
Chunk[O]
Source
Chunk.scala
Linear Supertypes
ChunkRuntimePlatform[O], ChunkPlatform[O], Chunk213And3Compat[O], Serializable, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Chunk
  2. ChunkRuntimePlatform
  3. ChunkPlatform
  4. Chunk213And3Compat
  5. Serializable
  6. AnyRef
  7. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new Chunk()

Abstract Value Members

  1. 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.

  2. 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.

  3. abstract def size: Int

    Returns the number of elements in this chunk.

  4. 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

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. 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).

  4. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  5. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  6. def asJava: List[O]

    Views this Chunk as a Java unmodifiable List.

    Views this Chunk as a Java unmodifiable List. Contrary to all methods that start with _"to"_ (e.g. {{toVector}}, {{toArray}}), this method does not copy data. As such, this method is mostly intended for foreach kind of interop.

  7. def asSeq: IndexedSeq[O]

    Views this Chunk as a Scala immutable Seq.

    Views this Chunk as a Scala immutable Seq. Contrary to all methods that start with _"to"_ (e.g. {{toVector}}, {{toArray}}), this method does not copy data. As such, this method is mostly intended for foreach kind of interop.

  8. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @IntrinsicCandidate() @native()
  9. def collect[O2](pf: PartialFunction[O, O2]): Chunk[O2]

    More efficient version of filter(pf.isDefinedAt).map(pf).

  10. def collectWhile[O2](pf: PartialFunction[O, O2]): Chunk[O2]

    More efficient version of takeWhile(pf.isDefinedAt).map(pf).

  11. def compact[O2 >: O](implicit ct: ClassTag[O2]): ArraySlice[O2]

    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.

  12. def contains[O2 >: O](elem: O2)(implicit ev: Eq[O2]): Boolean

    Returns true if the Chunk contains the given element.

  13. def count(p: (O) => Boolean): Int

    Counts the number of elements which satisfy a predicate.

  14. def drop(n: Int): Chunk[O]

    Drops the first n elements of this chunk.

  15. def dropRight(n: Int): Chunk[O]

    Drops the right-most n elements of this chunk queue in a way that preserves chunk structure.

  16. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  17. def equals(a: Any): Boolean
    Definition Classes
    Chunk → AnyRef → Any
  18. def exists(p: (O) => Boolean): Boolean

    Returns true if at least one element passes the predicate.

  19. def filter(p: (O) => Boolean): Chunk[O]

    Returns a chunk that has only the elements that satisfy the supplied predicate.

  20. def filterNot(p: (O) => Boolean): Chunk[O]

    Returns a chunk that has only the elements that do not satisfy the supplied predicate.

  21. 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.

  22. def flatMap[O2](f: (O) => Chunk[O2]): Chunk[O2]

    Maps f over the elements of this chunk and concatenates the result.

  23. def foldLeft[A](init: A)(f: (A, O) => A): A

    Left-folds the elements of this chunk.

  24. def forall(p: (O) => Boolean): Boolean

    Returns true if the predicate passes for all elements.

  25. def foreach(f: (O) => Unit): Unit

    Invokes the supplied function for each element of this chunk.

  26. def foreachWithIndex(f: (O, Int) => Unit): Unit

    Like foreach but includes the index of the element.

  27. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @IntrinsicCandidate() @native()
  28. def hashCode(): Int
    Definition Classes
    Chunk → AnyRef → Any
  29. def head: Option[O]

    Gets the first element of this chunk.

  30. def indexWhere(p: (O) => Boolean): Option[Int]

    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.

  31. final def isEmpty: Boolean

    True if size is zero, false otherwise.

  32. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  33. 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.

  34. def last: Option[O]

    Gets the last element of this chunk.

  35. def map[O2](f: (O) => O2): Chunk[O2]

    Creates a new chunk by applying f to each element in this chunk.

  36. 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 uses init as the input state value. Each successive invocation uses the output state of the previous invocation.

  37. 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.

  38. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  39. final def nonEmpty: Boolean

    False if size is zero, true otherwise.

  40. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @IntrinsicCandidate() @native()
  41. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @IntrinsicCandidate() @native()
  42. 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.

  43. def scanLeft[O2](z: O2)(f: (O2, O) => O2): Chunk[O2]

    Like foldLeft but emits each intermediate result of f.

  44. 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).

  45. def scanLeft_[O2](z: O2, emitZero: Boolean)(f: (O2, O) => O2): (Chunk[O2], O2)
    Attributes
    protected
  46. def splitAt(n: Int): (Chunk[O], Chunk[O])

    Splits this chunk in to two chunks at the specified index.

  47. def startsWith[O2 >: O](seq: Seq[O2]): Boolean

    Check to see if this starts with the items in the given seq.

  48. def startsWith[O2 >: O](chunk: Chunk[O2]): Boolean

    Check to see if this starts with the items in the given chunk.

  49. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  50. def take(n: Int): Chunk[O]

    Takes the first n elements of this chunk.

  51. def takeRight(n: Int): Chunk[O]

    Takes the right-most n elements of this chunk queue in a way that preserves chunk structure.

  52. def thisClassTag: ClassTag[Any]
    Attributes
    protected
  53. def to(collector: Collector[O]): Out

    Converts this chunk to a new collection using the supplied collector.

    Converts this chunk to a new collection using the supplied collector.

    Example:
    1. scala> Chunk(1, 2, 3).to(Set)
  54. def toArray[O2 >: O](implicit arg0: ClassTag[O2]): Array[O2]

    Copies the elements of this chunk to an array.

  55. def toArraySeq[O2 >: O](implicit arg0: ClassTag[O2]): ArraySeq[O2]
    Definition Classes
    Chunk213And3Compat
  56. def toArraySeqUntagged: ArraySeq[O]
    Definition Classes
    Chunk213And3Compat
  57. def toArraySlice[O2 >: O](implicit ct: ClassTag[O2]): ArraySlice[O2]

    Converts this chunk to a Chunk.ArraySlice.

  58. def toBitVector[B >: O](implicit ev: =:=[B, Byte]): BitVector

    Converts this chunk to a scodec-bits BitVector.

  59. def toByteBuffer[B >: O](implicit ev: =:=[B, Byte]): ByteBuffer

    Converts this chunk to a java.nio.ByteBuffer.

    Converts this chunk to a java.nio.ByteBuffer.

    Note

    that even "read-only" interaction with a ByteBuffer may increment its position, so this method should be considered as unsafely allocating mutable state.

  60. def toByteVector[B >: O](implicit ev: =:=[B, Byte]): ByteVector

    Converts this chunk to a scodec-bits ByteVector.

  61. def toChain: Chain[O]

    Converts this chunk to a chain.

  62. def toCharBuffer[C >: O](implicit ev: =:=[C, Char]): CharBuffer

    Converts this chunk to a java.nio.CharBuffer.

    Converts this chunk to a java.nio.CharBuffer.

    Note

    that even "read-only" interaction with a CharBuffer may increment its position, so this method should be considered as unsafely allocating mutable state.

  63. def toIndexedChunk: Chunk[O]

    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 ++.

  64. def toList: List[O]

    Converts this chunk to a list.

  65. def toNel: Option[NonEmptyList[O]]

    Converts this chunk to a NonEmptyList

  66. def toString(): String
    Definition Classes
    Chunk → AnyRef → Any
  67. def toVector: Vector[O]

    Converts this chunk to a vector.

  68. def traverse[F[_], O2](f: (O) => F[O2])(implicit F: Applicative[F]): F[Chunk[O2]]
  69. def traverseFilter[F[_], O2](f: (O) => F[Option[O2]])(implicit F: Applicative[F]): F[Chunk[O2]]
  70. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  71. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  72. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  73. def zip[O2](that: Chunk[O2]): Chunk[(O, O2)]

    Zips this chunk the the supplied chunk, returning a chunk of tuples.

  74. 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.

  75. 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.

    Example:
    1. scala> Chunk("The", "quick", "brown", "fox").zipWithIndex.toList
      res0: List[(String, Int)] = List((The,0), (quick,1), (brown,2), (fox,3))

Deprecated Value Members

  1. def compactUntagged[O2 >: O]: ArraySlice[O2]

    Like compact but does not require a ClassTag.

    Like compact but does not require a ClassTag. Elements are boxed and stored in an Array[Any].

    Annotations
    @deprecated
    Deprecated

    (Since version 3.1.6) Unsound when used with primitives, use compactBoxed instead

  2. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated

    (Since version 9)

Inherited from ChunkRuntimePlatform[O]

Inherited from ChunkPlatform[O]

Inherited from Chunk213And3Compat[O]

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped