This class is not intended for public subclassing.
To iterate over code points and multicharacter strings, use a loop like this:
for (UnicodeSetIterator it = new UnicodeSetIterator(set); it.next();) {
processString(it.getString());
}
To iterate over code point ranges, use a loop like this:
for (UnicodeSetIterator it = new UnicodeSetIterator(set); it.nextRange();) {
if (it.codepoint != UnicodeSetIterator.IS_STRING) {
processCodepointRange(it.codepoint, it.codepointEnd);
} else {
processString(it.getString());
}
}
To iterate over only the strings, start with new UnicodeSetIterator(set).skipToStrings().
Warning
For speed, UnicodeSet iteration does not check for concurrent modification. Do not alter the UnicodeSet while iterating.
UnicodeSet#ranges(), UnicodeSet#strings(), UnicodeSet#iterator()
| Modifier and Type | Field and Description |
|---|---|
| public int | codepoint
Current code point, or the special value IS_STRING, if the iterator points to a string. |
| public int | codepointEnd
When iterating over ranges using nextRange(), codepointEnd contains the inclusive end of the iteration range, if codepoint != IS_STRING. |
| private int | |
| private int | |
| public static final int | IS_STRING
Value of codepoint if the iterator points to a string. |
| private int | |
| private int | |
| private UnicodeSet | |
| public String | string
If codepoint == IS_STRING, then string points to the current string. |
| private Iterator | stringIterator
Invariant: stringIterator is null when there are no (more) strings remaining |
| Access | Constructor and Description |
|---|---|
| public | |
| public |
| Modifier and Type | Method and Description |
|---|---|
| public String | |
| private void | |
| public boolean | Returns: true if there was another element in the set and this object contains the element.Returns the next element in the set, either a single code point or a string. |
| public boolean | Returns: true if there was another element in the set and this object contains the element.Returns the next element in the set, either a code point range or a string. |
| public void | reset(UnicodeSet
the set to iterate over. uset)Sets this iterator to visit the elements of the given set and resets it to the start of that set. |
| public void | |
| public UnicodeSetIterator |
| codepoint | back to summary |
|---|---|
| public int codepoint Current code point, or the special value IS_STRING, if the iterator points to a string.
| |
| codepointEnd | back to summary |
|---|---|
| public int codepointEnd When iterating over ranges using nextRange(), codepointEnd contains the inclusive end of the iteration range, if codepoint != IS_STRING. If iterating over code points using next(), or if codepoint == IS_STRING, then the value of codepointEnd is undefined.
| |
| endElement | back to summary |
|---|---|
| private int endElement | |
| endRange | back to summary |
|---|---|
| private int endRange | |
| IS_STRING | back to summary |
|---|---|
| public static final int IS_STRING Value of codepoint if the iterator points to a string. If codepoint == IS_STRING, then examine string for the current iteration result.
| |
| nextElement | back to summary |
|---|---|
| private int nextElement | |
| range | back to summary |
|---|---|
| private int range | |
| set | back to summary |
|---|---|
| private UnicodeSet set | |
| string | back to summary |
|---|---|
| public String string If codepoint == IS_STRING, then string points to the current string. If codepoint != IS_STRING, the value of string is undefined.
| |
| stringIterator | back to summary |
|---|---|
| private Iterator<String> stringIterator Invariant: stringIterator is null when there are no (more) strings remaining | |
| UnicodeSetIterator | back to summary |
|---|---|
| public UnicodeSetIterator(UnicodeSet set) Create an iterator over the given set.
| |
| UnicodeSetIterator | back to summary |
|---|---|
| public UnicodeSetIterator() Create an iterator over nothing. next() and nextRange() return false. This is a convenience constructor allowing the target to be set later.
| |
| getString | back to summary |
|---|---|
| public String getString() Gets the current string from the iterator. Only use after calling next(), not nextRange().
| |
| loadRange | back to summary |
|---|---|
| private void loadRange(int aRange) | |
| next | back to summary |
|---|---|
| public boolean next() Returns the next element in the set, either a single code point or a string. If there are no more elements in the set, return false. If codepoint == IS_STRING, the value is a string in the string field. Otherwise the value is a single code point in the codepoint field. The order of iteration is all code points in sorted order, followed by all strings sorted order. codepointEnd is undefined after calling this method. string is undefined unless codepoint == IS_STRING. Do not mix calls to next() and nextRange() without calling reset() between them. The results of doing so are undefined. Warning For speed, UnicodeSet iteration does not check for concurrent modification. Do not alter the UnicodeSet while iterating.
| |
| nextRange | back to summary |
|---|---|
| public boolean nextRange() Returns the next element in the set, either a code point range or a string. If there are no more elements in the set, return false. If codepoint == IS_STRING, the value is a string in the string field. Otherwise the value is a range of one or more code points from codepoint to codepointeEnd inclusive. The order of iteration is all code points ranges in sorted order, followed by all strings sorted order. Ranges are disjoint and non-contiguous. string is undefined unless codepoint == IS_STRING. Do not mix calls to next() and nextRange() without calling reset() between them. The results of doing so are undefined.
| |
| reset | back to summary |
|---|---|
| public void reset(UnicodeSet uset) Sets this iterator to visit the elements of the given set and resets it to the start of that set. The iterator is valid only so long as set is valid.
| |
| reset | back to summary |
|---|---|
| public void reset() Resets this iterator to the start of the set.
| |
| skipToStrings | back to summary |
|---|---|
| public UnicodeSetIterator skipToStrings() Skips over the remaining code points/ranges, if any. A following call to next() or nextRange() will yield a string, if there is one. No-op if next() would return false, or if it would yield a string anyway.
| |