org.apache.lucene.util

## Class CharsRef

- java.lang.Object
- - org.apache.lucene.util.CharsRef

All Implemented Interfaces:
  CharSequence, Cloneable, Comparable<CharsRef>

    public final class CharsRef
    extends Object
    implements Comparable<CharsRef>, CharSequence, Cloneable

Represents char[], as a slice (offset + length) into an existing char[]. The `chars` member should never be null; use `EMPTY_CHARS` if necessary.

NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

### Field Summary

Fields
`char[]` `chars` The contents of the CharsRef.
`static char[]` `EMPTY_CHARS` An empty character array for convenience
`int` `length` Length of used characters.
`int` `offset` Offset of first valid character.

### Constructor Summary

Constructors
Constructor and Description
`CharsRef()` Creates a new `CharsRef` initialized an empty array zero-length
`CharsRef(char[] chars, int offset, int length)` Creates a new `CharsRef` initialized with the given array, offset and length
`CharsRef(int capacity)` Creates a new `CharsRef` initialized with an array of the given capacity
`CharsRef(String string)` Creates a new `CharsRef` initialized with the given Strings character array

### Method Summary

Methods
`void` `append(char[] otherChars, int otherOffset, int otherLength)` Appends the given array to this CharsRef
`char` `charAt(int index)`
`boolean` `charsEquals(CharsRef other)`
`CharsRef` `clone()`
`int` `compareTo(CharsRef other)` Signed int order comparison
`void` `copyChars(char[] otherChars, int otherOffset, int otherLength)` Copies the given array into this CharsRef.
`void` `copyChars(CharsRef other)` Copies the given `CharsRef` referenced content into this instance.
`static CharsRef` `deepCopyOf(CharsRef other)` Creates a new CharsRef that points to a copy of the chars from `other`
`boolean` `equals(Object other)`
`static Comparator<CharsRef>` `getUTF16SortedAsUTF8Comparator()` Deprecated. This comparator is only a transition mechanism
`void` `grow(int newLength)` Used to grow the reference array.
`int` `hashCode()`
`boolean` `isValid()` Performs internal consistency checks.
`int` `length()`
`CharSequence` `subSequence(int start, int end)`
`String` `toString()`

### Methods inherited from class java.lang.Object

`finalize, getClass, notify, notifyAll, wait, wait, wait`

### Field Detail

#### EMPTY_CHARS

    public static final char[] EMPTY_CHARS

An empty character array for convenience

#### chars

    public char[] chars

The contents of the CharsRef. Should never be `null`.

#### offset

    public int offset

Offset of first valid character.

#### length

    public int length

Length of used characters.

### Constructor Detail

#### CharsRef

    public CharsRef()

Creates a new `CharsRef` initialized an empty array zero-length

#### CharsRef

    public CharsRef(int capacity)

Creates a new `CharsRef` initialized with an array of the given capacity

#### CharsRef

    public CharsRef(char[] chars,
            int offset,
            int length)

Creates a new `CharsRef` initialized with the given array, offset and length

#### CharsRef

    public CharsRef(String string)

Creates a new `CharsRef` initialized with the given Strings character array

### Method Detail

#### clone

    public CharsRef clone()

Overrides:
  `clone` in class `Object`

#### hashCode

    public int hashCode()

Overrides:
  `hashCode` in class `Object`

#### equals

    public boolean equals(Object other)

Overrides:
  `equals` in class `Object`

#### charsEquals

    public boolean charsEquals(CharsRef other)

#### compareTo

    public int compareTo(CharsRef other)

Signed int order comparison

Specified by:
  `compareTo` in interface `Comparable<CharsRef>`

#### copyChars

    public void copyChars(CharsRef other)

Copies the given `CharsRef` referenced content into this instance.

Parameters:
  `other` - the `CharsRef` to copy

#### grow

    public void grow(int newLength)

Used to grow the reference array. In general this should not be used as it does not take the offset into account.

NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

#### copyChars

    public void copyChars(char[] otherChars,
                 int otherOffset,
                 int otherLength)

Copies the given array into this CharsRef.

#### append

    public void append(char[] otherChars,
              int otherOffset,
              int otherLength)

Appends the given array to this CharsRef

#### toString

    public String toString()

Specified by:
  `toString` in interface `CharSequence`
Overrides:
  `toString` in class `Object`

#### length

    public int length()

Specified by:
  `length` in interface `CharSequence`

#### charAt

    public char charAt(int index)

Specified by:
  `charAt` in interface `CharSequence`

#### subSequence

    public CharSequence subSequence(int start,
                           int end)

Specified by:
  `subSequence` in interface `CharSequence`

#### getUTF16SortedAsUTF8Comparator

    @Deprecated
    public static Comparator<CharsRef> getUTF16SortedAsUTF8Comparator()

Deprecated. This comparator is only a transition mechanism

#### deepCopyOf

    public static CharsRef deepCopyOf(CharsRef other)

Creates a new CharsRef that points to a copy of the chars from `other`

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

#### isValid

    public boolean isValid()

Performs internal consistency checks. Always returns true (or throws IllegalStateException)