org.exist.util
Class CharSlice

java.lang.Object
  extended by org.exist.util.CharSlice
All Implemented Interfaces:
Serializable, CharSequence

public final class CharSlice
extends Object
implements CharSequence, Serializable

This is an implementation of the JDK 1.4 CharSequence interface: it implements a CharSequence as a view of an array. The implementation relies on the array being immutable: as a minimum, the caller is required to ensure that the array contents will not change so long as the CharSlice remains in existence. This class should be more efficient than String because it avoids copying the characters unnecessarily. The methods in the class don't check their arguments. Incorrect arguments will generally result in exceptions from lower-level classes.

See Also:
Serialized Form

Constructor Summary
CharSlice(char[] array)
           
CharSlice(char[] array, int start, int length)
           
 
Method Summary
 char charAt(int index)
          Returns the character at the specified index.
 void copyTo(char[] destination, int destOffset)
          Append the contents to another array at a given offset.
 boolean equals(Object other)
          Compare equality
 int hashCode()
          Generate a hash code
 int indexOf(char c)
          Get the index of a specific character in the sequence.
 int length()
          Returns the length of this character sequence.
 void setLength(int length)
          Set the length of this character sequence, without changing the array and start offset to which it is bound
 CharSequence subSequence(int start, int end)
          Returns a new character sequence that is a subsequence of this sequence.
 String substring(int start, int end)
          Returns a new character sequence that is a subsequence of this sequence.
 String toString()
          Convert to a string
 void write(Writer writer)
          Write the value to a writer
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CharSlice

public CharSlice(char[] array)

CharSlice

public CharSlice(char[] array,
                 int start,
                 int length)
Method Detail

length

public int length()
Returns the length of this character sequence. The length is the number of 16-bit Unicode characters in the sequence.

Specified by:
length in interface CharSequence
Returns:
the number of characters in this sequence

setLength

public void setLength(int length)
Set the length of this character sequence, without changing the array and start offset to which it is bound


charAt

public char charAt(int index)
Returns the character at the specified index. An index ranges from zero to length() - 1. The first character of the sequence is at index zero, the next at index one, and so on, as for array indexing.

Specified by:
charAt in interface CharSequence
Parameters:
index - the index of the character to be returned
Returns:
the specified character
Throws:
IndexOutOfBoundsException - if the index argument is negative or not less than length()

subSequence

public CharSequence subSequence(int start,
                                int end)
Returns a new character sequence that is a subsequence of this sequence. The subsequence starts with the character at the specified index and ends with the character at index end - 1. The length of the returned sequence is end - start, so if start == end then an empty sequence is returned.

Specified by:
subSequence in interface CharSequence
Parameters:
start - the start index, inclusive
end - the end index, exclusive
Returns:
the specified subsequence
Throws:
IndexOutOfBoundsException - if start or end are negative, if end is greater than length(), or if start is greater than end

toString

public String toString()
Convert to a string

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

equals

public boolean equals(Object other)
Compare equality

Overrides:
equals in class Object

hashCode

public int hashCode()
Generate a hash code

Overrides:
hashCode in class Object

indexOf

public int indexOf(char c)
Get the index of a specific character in the sequence. Returns -1 if not found. This method mimics String.indexOf(int)

Parameters:
c - the character to be found
Returns:
the position of the first occurrence of that character, or -1 if not found.

substring

public String substring(int start,
                        int end)
Returns a new character sequence that is a subsequence of this sequence. Unlike subSequence, this is guaranteed to return a String.


copyTo

public void copyTo(char[] destination,
                   int destOffset)
Append the contents to another array at a given offset. The caller is responsible for ensuring that sufficient space is available.

Parameters:
destination - the array to which the characters will be copied
destOffset - the offset in the target array where the copy will start

write

public void write(Writer writer)
           throws IOException
Write the value to a writer

Throws:
IOException


Copyright (C) Wolfgang Meier. All rights reserved.