org.apache.lucene.util
Class BytesRef

java.lang.Object
  extended by org.apache.lucene.util.BytesRef
All Implemented Interfaces:
Cloneable, Comparable<BytesRef>

public final class BytesRef
extends Object
implements Comparable<BytesRef>, Cloneable

Represents byte[], as a slice (offset + length) into an existing byte[].

WARNING: This API is experimental and might change in incompatible ways in the next release.

Field Summary
 byte[] bytes
          The contents of the BytesRef.
static byte[] EMPTY_BYTES
          An empty byte array for convenience
 int length
          Length of used bytes.
 int offset
          Offset of first valid byte.
 
Constructor Summary
BytesRef()
          Create a BytesRef with EMPTY_BYTES
BytesRef(byte[] bytes)
          This instance will directly reference bytes w/o making a copy.
BytesRef(byte[] bytes, int offset, int length)
          This instance will directly reference bytes w/o making a copy.
BytesRef(CharSequence text)
          Initialize the byte[] from the UTF8 bytes for the provided String.
BytesRef(int capacity)
          Create a BytesRef pointing to a new array of size capacity.
 
Method Summary
 void append(BytesRef other)
          Appends the bytes from the given BytesRef
 boolean bytesEquals(BytesRef other)
          Expert: compares the bytes against another BytesRef, returning true if the bytes are equal.
 BytesRef clone()
           
 int compareTo(BytesRef other)
          Unsigned byte order comparison
 void copyBytes(BytesRef other)
          Copies the bytes from the given BytesRef
 void copyChars(char[] text, int offset, int length)
          Copies the UTF8 bytes for this string.
 void copyChars(CharSequence text)
          Copies the UTF8 bytes for this string.
static BytesRef deepCopyOf(BytesRef other)
          Creates a new BytesRef that points to a copy of the bytes from other
 boolean endsWith(BytesRef other)
           
 boolean equals(Object other)
           
static Comparator<BytesRef> getUTF8SortedAsUnicodeComparator()
           
static Comparator<BytesRef> getUTF8SortedAsUTF16Comparator()
           
 void grow(int newLength)
           
 int hashCode()
          Calculates the hash code as required by TermsHash during indexing.
 boolean startsWith(BytesRef other)
           
 String toString()
          Returns hex encoded bytes, eg [0x6c 0x75 0x63 0x65 0x6e 0x65]
 String utf8ToString()
          Interprets stored bytes as UTF8 bytes, returning the resulting string
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

EMPTY_BYTES

public static final byte[] EMPTY_BYTES
An empty byte array for convenience


bytes

public byte[] bytes
The contents of the BytesRef. Should never be null.


offset

public int offset
Offset of first valid byte.


length

public int length
Length of used bytes.

Constructor Detail

BytesRef

public BytesRef()
Create a BytesRef with EMPTY_BYTES


BytesRef

public BytesRef(byte[] bytes,
                int offset,
                int length)
This instance will directly reference bytes w/o making a copy. bytes should not be null.


BytesRef

public BytesRef(byte[] bytes)
This instance will directly reference bytes w/o making a copy. bytes should not be null


BytesRef

public BytesRef(int capacity)
Create a BytesRef pointing to a new array of size capacity. Offset and length will both be zero.


BytesRef

public BytesRef(CharSequence text)
Initialize the byte[] from the UTF8 bytes for the provided String.

Parameters:
text - This must be well-formed unicode text, with no unpaired surrogates.
Method Detail

copyChars

public void copyChars(CharSequence text)
Copies the UTF8 bytes for this string.

Parameters:
text - Must be well-formed unicode text, with no unpaired surrogates.

copyChars

public void copyChars(char[] text,
                      int offset,
                      int length)
Copies the UTF8 bytes for this string.

Parameters:
text - Must be well-formed unicode text, with no unpaired surrogates.

bytesEquals

public boolean bytesEquals(BytesRef other)
Expert: compares the bytes against another BytesRef, returning true if the bytes are equal.

Parameters:
other - Another BytesRef, should not be null.
NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

clone

public BytesRef clone()
Overrides:
clone in class Object

startsWith

public boolean startsWith(BytesRef other)

endsWith

public boolean endsWith(BytesRef other)

hashCode

public int hashCode()
Calculates the hash code as required by TermsHash during indexing.

It is defined as:

  int hash = 0;
  for (int i = offset; i < offset + length; i++) {
    hash = 31*hash + bytes[i];
  }
 

Overrides:
hashCode in class Object

equals

public boolean equals(Object other)
Overrides:
equals in class Object

utf8ToString

public String utf8ToString()
Interprets stored bytes as UTF8 bytes, returning the resulting string


toString

public String toString()
Returns hex encoded bytes, eg [0x6c 0x75 0x63 0x65 0x6e 0x65]

Overrides:
toString in class Object

copyBytes

public void copyBytes(BytesRef other)
Copies the bytes from the given BytesRef

NOTE: if this would exceed the array size, this method creates a new reference array.


append

public void append(BytesRef other)
Appends the bytes from the given BytesRef

NOTE: if this would exceed the array size, this method creates a new reference array.


grow

public void grow(int newLength)
NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

compareTo

public int compareTo(BytesRef other)
Unsigned byte order comparison

Specified by:
compareTo in interface Comparable<BytesRef>

getUTF8SortedAsUnicodeComparator

public static Comparator<BytesRef> getUTF8SortedAsUnicodeComparator()

getUTF8SortedAsUTF16Comparator

public static Comparator<BytesRef> getUTF8SortedAsUTF16Comparator()

deepCopyOf

public static BytesRef deepCopyOf(BytesRef other)
Creates a new BytesRef that points to a copy of the bytes from other

The returned BytesRef will have a length of other.length and an offset of zero.