Class LargeStringBuffer

  • All Implemented Interfaces:
    java.lang.CharSequence, AppendableCharSequence

    public final class LargeStringBuffer
    extends java.lang.Object
    implements AppendableCharSequence
    This is an implementation of the CharSequence interface: it implements a CharSequence as a list of arrays of characters (the individual arrays are known as segments). The segments have a fixed size of 65536 characters.

    This is more efficient than a buffer backed by a contiguous array of characters in cases where the size is likely to grow very large, and where substring operations are rare. As used within the TinyTree, extraction of the string value of a node requires character copying only in the case where the value crosses segment boundaries.

    • Constructor Summary

      Constructors 
      Constructor Description
      LargeStringBuffer()
      Create an empty LargeStringBuffer with default space allocation
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      LargeStringBuffer cat​(char c)
      Append a single character to this CharSequence
      LargeStringBuffer cat​(java.lang.CharSequence s)
      Append a CharSequence to this LargeStringBuffer
      char charAt​(int index)
      Returns the character at the specified index.
      boolean equals​(java.lang.Object other)
      Compare equality
      int hashCode()
      Generate a hash code
      int length()
      Returns the length of this character sequence.
      void setLength​(int length)
      Set the length.
      java.lang.CharSequence subSequence​(int start, int end)
      Returns a new character sequence that is a subsequence of this sequence.
      java.lang.String substring​(int start, int end)
      Returns a new character sequence that is a subsequence of this sequence.
      java.lang.String toString()
      Convert to a string
      void write​(java.io.Writer writer)
      Write the value to a writer
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
      • Methods inherited from interface java.lang.CharSequence

        chars, codePoints
    • Constructor Detail

      • LargeStringBuffer

        public LargeStringBuffer()
        Create an empty LargeStringBuffer with default space allocation
    • Method Detail

      • cat

        public LargeStringBuffer cat​(java.lang.CharSequence s)
        Append a CharSequence to this LargeStringBuffer
        Specified by:
        cat in interface AppendableCharSequence
        Parameters:
        s - the data to be appended
        Returns:
        the concatenated results
      • length

        public int length()
        Returns the length of this character sequence. The length is the number of 16-bit UTF-16 characters in the sequence.
        Specified by:
        length in interface java.lang.CharSequence
        Returns:
        the number of characters in this sequence
      • setLength

        public void setLength​(int length)
        Set the length. If this exceeds the current length, this method is a no-op. If this is less than the current length, characters beyond the specified point are deleted.
        Specified by:
        setLength in interface AppendableCharSequence
        Parameters:
        length - the new length
      • 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 java.lang.CharSequence
        Parameters:
        index - the index of the character to be returned
        Returns:
        the specified character
        Throws:
        java.lang.IndexOutOfBoundsException - if the index argument is negative or not less than length()
      • subSequence

        public java.lang.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 java.lang.CharSequence
        Parameters:
        start - the start index, inclusive
        end - the end index, exclusive
        Returns:
        the specified subsequence
        Throws:
        java.lang.IndexOutOfBoundsException - if start or end are negative, if end is greater than length(), or if start is greater than end
      • toString

        public java.lang.String toString()
        Convert to a string
        Specified by:
        toString in interface java.lang.CharSequence
        Overrides:
        toString in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object other)
        Compare equality
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Generate a hash code
        Overrides:
        hashCode in class java.lang.Object
      • substring

        public java.lang.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.
        Parameters:
        start - index of the first character to be included
        end - index of the character after the last one to be included
        Returns:
        the substring at the given position
      • write

        public void write​(java.io.Writer writer)
                   throws java.io.IOException
        Write the value to a writer
        Parameters:
        writer - the writer to which the value is to be written
        Throws:
        java.io.IOException - if an error occurs downstream