Class ByteString
- All Implemented Interfaces:
scala.collection.immutable.IndexedSeq<Object>
,scala.collection.immutable.IndexedSeqOps<Object,
,scala.collection.immutable.IndexedSeq, scala.collection.immutable.IndexedSeq<Object>> scala.collection.immutable.Iterable<Object>
,scala.collection.immutable.Seq<Object>
,scala.collection.immutable.SeqOps<Object,
,scala.collection.immutable.Seq, scala.collection.immutable.Seq<Object>> scala.collection.immutable.StrictOptimizedSeqOps<Object,
,scala.collection.immutable.IndexedSeq, ByteString> scala.collection.IndexedSeq<Object>
,scala.collection.IndexedSeqOps<Object,
,scala.collection.IndexedSeq, scala.collection.IndexedSeq<Object>> scala.collection.Iterable<Object>
,scala.collection.IterableFactoryDefaults<Object,
,scala.collection.Iterable> scala.collection.IterableOnce<Object>
,scala.collection.IterableOnceOps<Object,
,scala.collection.Iterable, scala.collection.Iterable> scala.collection.IterableOps<Object,
,scala.collection.Iterable, scala.collection.Iterable> scala.collection.Seq<Object>
,scala.collection.SeqOps<Object,
,scala.collection.Seq, scala.collection.Seq<Object>> scala.collection.StrictOptimizedIterableOps<Object,
,scala.collection.immutable.IndexedSeq, ByteString> scala.collection.StrictOptimizedSeqOps<Object,
,scala.collection.immutable.IndexedSeq, ByteString> scala.Equals
,scala.Function1<Object,
,Object> scala.PartialFunction<Object,
Object>
- Direct Known Subclasses:
ByteString.ByteString1
,ByteString.ByteStrings
,CompactByteString
TODO: Add performance characteristics
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final class
An unfragmented ByteString.static class
INTERNAL API: ByteString backed by exactly one array, with start / end markersstatic final class
A compact (unsliced) and unfragmented ByteString, implementation of ByteString1C.static class
static final class
A ByteString with 2 or more fragments.static class
static interface
static class
Nested classes/interfaces inherited from interface scala.Function1
scala.Function1.UnliftOps<A extends Object,
B extends Object>, scala.Function1.UnliftOps$ -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract ByteString
$plus$plus
(ByteString that) Efficiently concatenate another ByteString.abstract byte
apply
(int idx) abstract ByteBuffer
Returns a read-only ByteBuffer that directly wraps this ByteString if it is not fragmented.abstract scala.collection.immutable.Iterable<ByteBuffer>
Scala API: Returns an immutable Iterable of read-only ByteBuffers that directly wraps this ByteStrings all fragments.abstract InputStream
Return the bytes in this ByteString as an InputStream.final String
abstract CompactByteString
compact()
Create a new ByteString with all contents compacted into a single, full byte array.concat
(ByteString that) Java API: efficiently concatenate another ByteString.boolean
contains
(byte elem) Checks if this ByteString contains a specific byte.<B> boolean
contains
(B elem) final <B> int
copyToArray
(Object xs, int start) <B> int
copyToArray
(Object xs, int start, int len) abstract int
copyToBuffer
(ByteBuffer buffer) Copy as many bytes as possible to a ByteBuffer, starting from it's current position.static ByteStringBuilder
Java APIabstract ByteString
Returns a ByteString which is the binary representation of this ByteString if this ByteString is Base64-encoded.abstract String
decodeString
(String charset) Decodes this ByteString using a charset to produce a String.abstract String
decodeString
(Charset charset) Decodes this ByteString using a charset to produce a String.drop
(int n) dropRight
(int n) empty()
static ByteString
Java APIabstract ByteString
Returns a ByteString which is the Base64 representation of this ByteString<U> void
static ByteString
fromArray
(byte[] array) Creates a new ByteString by copying a byte array.static ByteString
fromArray
(byte[] array, int offset, int length) Creates a new ByteString by copying length bytes starting at offset from an Array.static ByteString
fromArrayUnsafe
(byte[] array) Unsafe API: Use only in situations you are completely confident that this is what you need, and that you understand the implications documented below.static ByteString
fromArrayUnsafe
(byte[] array, int offset, int length) Unsafe API: Use only in situations you are completely confident that this is what you need, and that you understand the implications documented below.static ByteString
fromByteBuffer
(ByteBuffer buffer) Creates a new ByteString by copying bytes out of a ByteBuffer.static ByteString
fromInts
(int... array) JAVA API Creates a new ByteString by copying an int array by converting from integral numbers to bytes.static ByteString
JAVA API Creates a new ByteString by copying an int array by converting from integral numbers to bytes.protected ByteString
fromSpecific
(scala.collection.IterableOnce<Object> coll) static ByteString
fromString
(String string) Creates a new ByteString which will contain the UTF-8 representation of the given Stringstatic ByteString
fromString
(String string, String charset) Creates a new ByteString which will contain the representation of the given String in the given charsetstatic ByteString
fromString
(String string, Charset charset) Creates a new ByteString which will contain the representation of the given String in the given charsetJava API: Returns an Iterable of read-only ByteBuffers that directly wraps this ByteStrings all fragments.scala.collection.Iterator<ByteString>
grouped
(int size) byte
head()
int
indexOf
(byte elem) Finds index of first occurrence of some byte in this ByteString.int
indexOf
(byte elem, int from) Finds index of first occurrence of some byte in this ByteString after or at some start index.abstract int
indexOf
(byte elem, int from, int to) Finds index of first occurrence of some byte in this ByteString after or at some start index.<B> int
indexOf
(B elem, int from) int
indexWhere
(scala.Function1<Object, Object> p, int from) init()
abstract boolean
Check whether this ByteString is compact in memory.boolean
isEmpty()
iterator()
byte
last()
<A> ByteString
final ByteString
map method that will automatically cast Int back into Byte.static ByteStringBuilder
protected scala.collection.mutable.Builder<Object,
ByteString> slice
(int from, int until) scala.Tuple2<ByteString,
ByteString> scala.Tuple2<ByteString,
ByteString> splitAt
(int n) tail()
take
(int n) takeRight
(int n) protected byte[]
toArray()
Java API: copy this ByteString into a fresh byte arrayfinal <B> Object
toArray
(scala.reflect.ClassTag<B> arg0) byte[]
Unsafe API: Use only in situations you are completely confident that this is what you need, and that you understand the implications documented below.Creates a new ByteBuffer with a copy of all bytes contained in this ByteString.toString()
static String
UTF_8()
Standard "UTF-8" charsetfinal String
Decodes this ByteString as a UTF-8 encoded String.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface scala.Function1
apply, apply$mcDD$sp, apply$mcDF$sp, apply$mcDI$sp, apply$mcDJ$sp, apply$mcFD$sp, apply$mcFF$sp, apply$mcFI$sp, apply$mcFJ$sp, apply$mcID$sp, apply$mcIF$sp, apply$mcII$sp, apply$mcIJ$sp, apply$mcJD$sp, apply$mcJF$sp, apply$mcJI$sp, apply$mcJJ$sp, apply$mcVD$sp, apply$mcVF$sp, apply$mcVI$sp, apply$mcVJ$sp, apply$mcZD$sp, apply$mcZF$sp, apply$mcZI$sp, apply$mcZJ$sp, compose
Methods inherited from interface scala.collection.immutable.IndexedSeq
applyPreferredMaxLength, canEqual, iterableFactory, sameElements, toIndexedSeq
Methods inherited from interface scala.collection.IndexedSeq
stringPrefix
Methods inherited from interface scala.collection.IndexedSeqOps
foldRight, headOption, knownSize, lengthCompare, lengthCompare, map, prepended, reverse, reversed, reverseIterator, search, search, sliding, stepper, view, view
Methods inherited from interface scala.collection.Iterable
coll, collectionClassName, lazyZip, seq, toIterable
Methods inherited from interface scala.collection.IterableOnceOps
$colon$bslash, $div$colon, addString, addString, addString, aggregate, collectFirst, copyToArray, copyToBuffer, corresponds, count, exists, find, fold, foldLeft, forall, hasDefiniteSize, max, maxBy, maxByOption, maxOption, min, minBy, minByOption, minOption, mkString, mkString, mkString, nonEmpty, product, reduce, reduceLeft, reduceLeftOption, reduceOption, reduceRight, reduceRightOption, sum, to, toBuffer, toIterator, toList, toMap, toSet, toStream, toVector
Methods inherited from interface scala.collection.IterableOps
$plus$plus, companion, groupBy, groupMap, groupMapReduce, inits, isTraversableAgain, lastOption, repr, scan, scanRight, sizeIs, sliding, tails, toTraversable, transpose, withFilter, zipAll
Methods inherited from interface scala.PartialFunction
andThen, andThen, applyOrElse, compose, elementWise, isDefinedAt, lift, orElse, runWith, unapply
Methods inherited from interface scala.collection.immutable.Seq
toSeq
Methods inherited from interface scala.collection.Seq
equals, hashCode
Methods inherited from interface scala.collection.SeqOps
$colon$plus, $colon$plus$plus, $plus$colon, $plus$plus$colon, combinations, concat, containsSlice, corresponds, distinct, endsWith, findLast, indexOf, indexOfSlice, indexOfSlice, indexWhere, indices, isDefinedAt, lastIndexOf, lastIndexOf$default$2, lastIndexOfSlice, lastIndexOfSlice, lastIndexWhere, lastIndexWhere, length, lengthIs, occCounts, permutations, prefixLength, reverseMap, scala$collection$SeqOps$$toGenericSeq, segmentLength, segmentLength, size, sizeCompare, sizeCompare, sortBy, sortWith, startsWith, startsWith$default$2, union
Methods inherited from interface scala.collection.StrictOptimizedIterableOps
collect, filter, filterImpl, filterNot, flatMap, flatten, map, partition, partitionMap, scanLeft, strictOptimizedCollect, strictOptimizedConcat, strictOptimizedFlatMap, strictOptimizedFlatten, strictOptimizedMap, strictOptimizedZip, tapEach, unzip, unzip3, zip, zipWithIndex
Methods inherited from interface scala.collection.immutable.StrictOptimizedSeqOps
distinctBy, patch, sorted, updated
Methods inherited from interface scala.collection.StrictOptimizedSeqOps
appended, appendedAll, diff, intersect, padTo, prepended, prependedAll
-
Constructor Details
-
ByteString
public ByteString()
-
-
Method Details
-
fromInts
JAVA API Creates a new ByteString by copying an int array by converting from integral numbers to bytes. -
fromArray
Creates a new ByteString by copying a byte array. -
fromArrayUnsafe
Unsafe API: Use only in situations you are completely confident that this is what you need, and that you understand the implications documented below.Creates a ByteString without copying the passed in byte array, unlike other factory methods defined on ByteString. This method of creating a ByteString saves one array copy and allocation and therefore can lead to better performance, however it also means that one MUST NOT modify the passed in array, or unexpected immutable data structure contract-breaking behavior will manifest itself.
This API is intended for users who have obtained an byte array from some other API, and want wrap it into an ByteArray, and from there on only use that reference (the ByteString) to operate on the wrapped data. For all other intents and purposes, please use the usual apply and create methods - which provide the immutability guarantees by copying the array.
-
fromArray
Creates a new ByteString by copying length bytes starting at offset from an Array. -
fromArrayUnsafe
Unsafe API: Use only in situations you are completely confident that this is what you need, and that you understand the implications documented below.Creates a ByteString without copying the passed in byte array, unlike other factory methods defined on ByteString. This method of creating a ByteString saves one array copy and allocation and therefore can lead to better performance, however it also means that one MUST NOT modify the passed in array, or unexpected immutable data structure contract-breaking behavior will manifest itself.
This API is intended for users who have obtained an byte array from some other API, and want wrap it into an ByteArray, and from there on only use that reference (the ByteString) to operate on the wrapped data. For all other intents and purposes, please use the usual apply and create methods - which provide the immutability guarantees by copying the array.
-
fromInts
JAVA API Creates a new ByteString by copying an int array by converting from integral numbers to bytes. -
fromString
Creates a new ByteString which will contain the UTF-8 representation of the given String -
fromString
Creates a new ByteString which will contain the representation of the given String in the given charset -
fromString
Creates a new ByteString which will contain the representation of the given String in the given charset -
UTF_8
Standard "UTF-8" charset -
fromByteBuffer
Creates a new ByteString by copying bytes out of a ByteBuffer. -
emptyByteString
Java API -
newBuilder
-
createBuilder
Java API -
fromSpecific
-
newSpecificBuilder
-
empty
-
apply
public abstract byte apply(int idx) -
className
- Specified by:
className
in interfacescala.collection.Iterable<Object>
-
isEmpty
public boolean isEmpty() -
iterator
-
head
public byte head() -
tail
- Specified by:
tail
in interfacescala.collection.IterableOps<Object,
scala.collection.Iterable, scala.collection.Iterable>
-
last
public byte last() -
init
- Specified by:
init
in interfacescala.collection.IterableOps<Object,
scala.collection.Iterable, scala.collection.Iterable>
-
take
- Specified by:
take
in interfacescala.collection.IndexedSeqOps<Object,
scala.collection.IndexedSeq, scala.collection.IndexedSeq<Object>> - Specified by:
take
in interfacescala.collection.IterableOnceOps<Object,
scala.collection.Iterable, scala.collection.Iterable> - Specified by:
take
in interfacescala.collection.IterableOps<Object,
scala.collection.Iterable, scala.collection.Iterable>
-
takeRight
- Specified by:
takeRight
in interfacescala.collection.IndexedSeqOps<Object,
scala.collection.IndexedSeq, scala.collection.IndexedSeq<Object>> - Specified by:
takeRight
in interfacescala.collection.IterableOps<Object,
scala.collection.Iterable, scala.collection.Iterable> - Specified by:
takeRight
in interfacescala.collection.StrictOptimizedIterableOps<Object,
scala.collection.immutable.IndexedSeq, ByteString>
-
slice
- Specified by:
slice
in interfacescala.collection.immutable.IndexedSeqOps<Object,
scala.collection.immutable.IndexedSeq, scala.collection.immutable.IndexedSeq<Object>> - Specified by:
slice
in interfacescala.collection.IndexedSeqOps<Object,
scala.collection.IndexedSeq, scala.collection.IndexedSeq<Object>> - Specified by:
slice
in interfacescala.collection.IterableOnceOps<Object,
scala.collection.Iterable, scala.collection.Iterable> - Specified by:
slice
in interfacescala.collection.IterableOps<Object,
scala.collection.Iterable, scala.collection.Iterable>
-
drop
- Specified by:
drop
in interfacescala.collection.IndexedSeqOps<Object,
scala.collection.IndexedSeq, scala.collection.IndexedSeq<Object>> - Specified by:
drop
in interfacescala.collection.IterableOnceOps<Object,
scala.collection.Iterable, scala.collection.Iterable> - Specified by:
drop
in interfacescala.collection.IterableOps<Object,
scala.collection.Iterable, scala.collection.Iterable>
-
dropRight
- Specified by:
dropRight
in interfacescala.collection.IndexedSeqOps<Object,
scala.collection.IndexedSeq, scala.collection.IndexedSeq<Object>> - Specified by:
dropRight
in interfacescala.collection.IterableOps<Object,
scala.collection.Iterable, scala.collection.Iterable> - Specified by:
dropRight
in interfacescala.collection.StrictOptimizedIterableOps<Object,
scala.collection.immutable.IndexedSeq, ByteString>
-
takeWhile
-
dropWhile
-
span
- Specified by:
span
in interfacescala.collection.IterableOnceOps<Object,
scala.collection.Iterable, scala.collection.Iterable> - Specified by:
span
in interfacescala.collection.IterableOps<Object,
scala.collection.Iterable, scala.collection.Iterable> - Specified by:
span
in interfacescala.collection.StrictOptimizedIterableOps<Object,
scala.collection.immutable.IndexedSeq, ByteString>
-
splitAt
-
indexWhere
-
indexOf
public <B> int indexOf(B elem, int from) -
indexOf
public abstract int indexOf(byte elem, int from, int to) Finds index of first occurrence of some byte in this ByteString after or at some start index. This overload allows you to specify an end index (exclusive).- Parameters:
elem
- the element value to search for.from
- the start indexto
- the end index (exclusive)- Returns:
- the index
>= from
and< to
of the first element of this ByteString that is equal (as determined by==
) toelem
, or-1
, if none exists. - Since:
- 1.3.0
-
indexOf
public int indexOf(byte elem, int from) Finds index of first occurrence of some byte in this ByteString after or at some start index.Similar to indexOf, but it avoids boxing if the value is already a byte.
- Parameters:
elem
- the element value to search for.from
- the start index- Returns:
- the index
>= from
of the first element of this ByteString that is equal (as determined by==
) toelem
, or-1
, if none exists. - Since:
- 1.1.0
-
indexOf
public int indexOf(byte elem) Finds index of first occurrence of some byte in this ByteString.Similar to indexOf, but it avoids boxing if the value is already a byte.
- Parameters:
elem
- the element value to search for.- Returns:
- the index
>= from
of the first element of this ByteString that is equal (as determined by==
) toelem
, or-1
, if none exists. - Since:
- 1.1.0
-
contains
public <B> boolean contains(B elem) -
contains
public boolean contains(byte elem) Checks if this ByteString contains a specific byte. Similar to Seq's contains function, but it avoids boxing if the value is already a byte.- Since:
- 2.0.0
-
grouped
- Specified by:
grouped
in interfacescala.collection.IterableOps<Object,
scala.collection.Iterable, scala.collection.Iterable>
-
toString
-
toArray
protected byte[] toArray()Java API: copy this ByteString into a fresh byte array- Returns:
- this ByteString copied into a byte array
-
toArray
- Specified by:
toArray
in interfacescala.collection.IterableOnceOps<Object,
scala.collection.Iterable, scala.collection.Iterable>
-
copyToArray
- Specified by:
copyToArray
in interfacescala.collection.IterableOnceOps<Object,
scala.collection.Iterable, scala.collection.Iterable>
-
copyToArray
- Specified by:
copyToArray
in interfacescala.collection.IterableOnceOps<Object,
scala.collection.Iterable, scala.collection.Iterable>
-
toArrayUnsafe
public byte[] toArrayUnsafe()Unsafe API: Use only in situations you are completely confident that this is what you need, and that you understand the implications documented below.If the ByteString is backed by a single array it is returned without any copy. If it is backed by a rope of multiple ByteString instances a new array will be allocated and the contents will be copied into it before returning it.
This method of exposing the bytes of a ByteString can save one array copy and allocation in the happy path scenario which can lead to better performance, however it also means that one MUST NOT modify the returned array, or unexpected immutable data structure contract-breaking behavior will manifest itself.
This API is intended for users who need to pass the byte array to some other API, which will only read the bytes and never mutate then. For all other intents and purposes, please use the usual toArray method - which provide the immutability guarantees by copying the backing array.
-
asInputStream
Return the bytes in this ByteString as an InputStream.- Returns:
- the bytes in this ByteString accessible as an InputStream
- Since:
- 1.1.0
- See Also:
-
foreach
- Specified by:
foreach
in interfacescala.collection.IterableOnceOps<Object,
scala.collection.Iterable, scala.collection.Iterable>
-
$plus$plus
Efficiently concatenate another ByteString. -
concat
Java API: efficiently concatenate another ByteString. -
copyToBuffer
Copy as many bytes as possible to a ByteBuffer, starting from it's current position. This method will not overflow the buffer.- Parameters:
buffer
- a ByteBuffer to copy bytes to- Returns:
- the number of bytes actually copied
-
compact
Create a new ByteString with all contents compacted into a single, full byte array. If isCompact returns true, compact is an O(1) operation, but might return a different object with an optimized implementation. -
isCompact
public abstract boolean isCompact()Check whether this ByteString is compact in memory. If the ByteString is compact, it might, however, not be represented by an object that takes full advantage of that fact. Use compact to get such an object. -
asByteBuffer
Returns a read-only ByteBuffer that directly wraps this ByteString if it is not fragmented. -
asByteBuffers
Scala API: Returns an immutable Iterable of read-only ByteBuffers that directly wraps this ByteStrings all fragments. Will always have at least one entry. -
getByteBuffers
Java API: Returns an Iterable of read-only ByteBuffers that directly wraps this ByteStrings all fragments. Will always have at least one entry. -
toByteBuffer
Creates a new ByteBuffer with a copy of all bytes contained in this ByteString. -
utf8String
Decodes this ByteString as a UTF-8 encoded String. -
decodeString
Decodes this ByteString using a charset to produce a String. If you have aCharset
instance available, usedecodeString(charset: java.nio.charset.Charset
instead. -
decodeString
Decodes this ByteString using a charset to produce a String. Avoids Charset.forName lookup in String internals, thus is preferable todecodeString(charset: String)
. -
decodeBase64
Returns a ByteString which is the binary representation of this ByteString if this ByteString is Base64-encoded. -
encodeBase64
Returns a ByteString which is the Base64 representation of this ByteString -
mapI
map method that will automatically cast Int back into Byte. -
map
-