Class StringTokenIterator

  • All Implemented Interfaces:
    TokenIterator, java.util.Enumeration<java.lang.String>, java.util.Iterator<java.lang.String>

    public class StringTokenIterator
    extends AbstractTokenIterator
    StringTokenIterator, a drop-in replacement for StringTokenizer. StringTokenIterator has the following features:
    • Iterates over a strings, 20-50% faster than StringTokenizer (and magnitudes faster than String.split(..) or Pattern.split(..))
    • Implements the Iterator interface
    • Optionally returns delimiters
    • Optionally returns empty elements
    • Optionally iterates in reverse
    • Resettable
    Version:
    $Id: //depot/branches/personal/haraldk/twelvemonkeys/release-2/twelvemonkeys-core/src/main/java/com/twelvemonkeys/util/StringTokenIterator.java#1 $
    See Also:
    StringTokenizer
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
        StringTokenIterator​(java.lang.String pString)
      Creates a StringTokenIterator
      private StringTokenIterator​(java.lang.String pString, char[] pDelimiters, int pDirection, boolean pIncludeDelimiters, boolean pIncludeEmpty)
      Implementation.
        StringTokenIterator​(java.lang.String pString, java.lang.String pDelimiters)
      Creates a StringTokenIterator
        StringTokenIterator​(java.lang.String pString, java.lang.String pDelimiters, boolean pIncludeDelimiters)
      Creates a StringTokenIterator
        StringTokenIterator​(java.lang.String pString, java.lang.String pDelimiters, int pDirection)
      Creates a StringTokenIterator
        StringTokenIterator​(java.lang.String pString, java.lang.String pDelimiters, int pDirection, boolean pIncludeDelimiters, boolean pIncludeEmpty)
      Creates a StringTokenIterator
    • Field Detail

      • string

        private final java.lang.String string
      • delimiters

        private final char[] delimiters
      • position

        private int position
      • maxPosition

        private final int maxPosition
      • next

        private java.lang.String next
      • nextDelimiter

        private java.lang.String nextDelimiter
      • includeDelimiters

        private final boolean includeDelimiters
      • includeEmpty

        private final boolean includeEmpty
      • reverse

        private final boolean reverse
      • maxDelimiter

        private final char maxDelimiter
        Stores the value of the delimiter character with the highest value. It is used to optimize the detection of delimiter characters.
    • Constructor Detail

      • StringTokenIterator

        public StringTokenIterator​(java.lang.String pString)
        Creates a StringTokenIterator
        Parameters:
        pString - the string to be parsed.
      • StringTokenIterator

        public StringTokenIterator​(java.lang.String pString,
                                   java.lang.String pDelimiters)
        Creates a StringTokenIterator
        Parameters:
        pString - the string to be parsed.
        pDelimiters - the delimiters.
      • StringTokenIterator

        public StringTokenIterator​(java.lang.String pString,
                                   java.lang.String pDelimiters,
                                   int pDirection)
        Creates a StringTokenIterator
        Parameters:
        pString - the string to be parsed.
        pDelimiters - the delimiters.
        pDirection - iteration direction.
      • StringTokenIterator

        public StringTokenIterator​(java.lang.String pString,
                                   java.lang.String pDelimiters,
                                   boolean pIncludeDelimiters)
        Creates a StringTokenIterator
        Parameters:
        pString - the string to be parsed.
        pDelimiters - the delimiters.
        pIncludeDelimiters - flag indicating whether to return delimiters as tokens.
      • StringTokenIterator

        public StringTokenIterator​(java.lang.String pString,
                                   java.lang.String pDelimiters,
                                   int pDirection,
                                   boolean pIncludeDelimiters,
                                   boolean pIncludeEmpty)
        Creates a StringTokenIterator
        Parameters:
        pString - the string to be parsed.
        pDelimiters - the delimiters.
        pDirection - iteration direction.
        pIncludeDelimiters - flag indicating whether to return delimiters as tokens.
        pIncludeEmpty - flag indicating whether to return empty tokens
      • StringTokenIterator

        private StringTokenIterator​(java.lang.String pString,
                                    char[] pDelimiters,
                                    int pDirection,
                                    boolean pIncludeDelimiters,
                                    boolean pIncludeEmpty)
        Implementation.
        Parameters:
        pString - the string to be parsed.
        pDelimiters - the delimiters.
        pDirection - iteration direction.
        pIncludeDelimiters - flag indicating whether to return delimiters as tokens.
        pIncludeEmpty - flag indicating whether to return empty tokens
    • Method Detail

      • toCharArray

        private static char[] toCharArray​(java.lang.String pDelimiters)
      • initMaxDelimiter

        private static char initMaxDelimiter​(char[] pDelimiters)
        Returns the highest char in the delimiter set.
        Parameters:
        pDelimiters - the delimiter set
        Returns:
        the highest char
      • reset

        public void reset()
        Resets this iterator.
      • hasNext

        public boolean hasNext()
        Returns true if the iteration has more elements. (In other words, returns true if next would return an element rather than throwing an exception.)
        Returns:
        true if the iterator has more elements.
      • fetchNext

        private java.lang.String fetchNext()
      • fetchReverse

        private java.lang.String fetchReverse()
      • fetchForward

        private java.lang.String fetchForward()
      • scanForNext

        private int scanForNext()
      • scanForPrev

        private int scanForPrev()
      • next

        public java.lang.String next()
        Returns the next element in the iteration.
        Returns:
        the next element in the iteration.
        Throws:
        java.util.NoSuchElementException - iteration has no more elements.