Class UnicodeSetIterator
- java.lang.Object
-
- com.ibm.icu.text.UnicodeSetIterator
-
public final class UnicodeSetIterator extends Object
UnicodeSetIterator iterates over the contents of a UnicodeSet. It iterates over either code points or code point ranges. After all code points or ranges have been returned, it returns the multicharacter strings of the UnicodeSet, if any.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.
- Author:
- M. Davis
- See Also:
UnicodeSet.ranges()
,UnicodeSet.strings()
,UnicodeSet.iterator()
- Status:
- Stable ICU 2.0.
-
-
Field Summary
Fields Modifier and Type Field Description int
codepoint
Current code point, or the special valueIS_STRING
, if the iterator points to a string.int
codepointEnd
When iterating over ranges usingnextRange()
,codepointEnd
contains the inclusive end of the iteration range, ifcodepoint != IS_STRING
.static int
IS_STRING
Value ofcodepoint
if the iterator points to a string.String
string
Ifcodepoint == IS_STRING
, thenstring
points to the current string.
-
Constructor Summary
Constructors Constructor Description UnicodeSetIterator()
Create an iterator over nothing.UnicodeSetIterator(UnicodeSet set)
Create an iterator over the given set.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description String
getString()
Gets the current string from the iterator.boolean
next()
Returns the next element in the set, either a single code point or a string.boolean
nextRange()
Returns the next element in the set, either a code point range or a string.void
reset()
Resets this iterator to the start of the set.void
reset(UnicodeSet uset)
Sets this iterator to visit the elements of the given set and resets it to the start of that set.UnicodeSetIterator
skipToStrings()
Skips over the remaining code points/ranges, if any.
-
-
-
Field Detail
-
IS_STRING
public static final int IS_STRING
Value ofcodepoint
if the iterator points to a string. Ifcodepoint == IS_STRING
, then examinestring
for the current iteration result.- See Also:
- Constant Field Values
- Status:
- Stable ICU 2.0.
-
codepoint
public int codepoint
Current code point, or the special valueIS_STRING
, if the iterator points to a string.- Status:
- Stable ICU 2.0.
-
codepointEnd
public int codepointEnd
When iterating over ranges usingnextRange()
,codepointEnd
contains the inclusive end of the iteration range, ifcodepoint != IS_STRING
. If iterating over code points usingnext()
, or ifcodepoint == IS_STRING
, then the value ofcodepointEnd
is undefined.- Status:
- Stable ICU 2.0.
-
string
public String string
Ifcodepoint == IS_STRING
, thenstring
points to the current string. Ifcodepoint != IS_STRING
, the value ofstring
is undefined.- Status:
- Stable ICU 2.0.
-
-
Constructor Detail
-
UnicodeSetIterator
public UnicodeSetIterator(UnicodeSet set)
Create an iterator over the given set.- Parameters:
set
- set to iterate over- Status:
- Stable ICU 2.0.
-
UnicodeSetIterator
public UnicodeSetIterator()
Create an iterator over nothing.next()
andnextRange()
return false. This is a convenience constructor allowing the target to be set later.- Status:
- Stable ICU 2.0.
-
-
Method Detail
-
skipToStrings
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.- Returns:
- this
- See Also:
UnicodeSet.strings()
- Status:
- Stable ICU 70.
-
next
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. Ifcodepoint == IS_STRING
, the value is a string in thestring
field. Otherwise the value is a single code point in thecodepoint
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 unlesscodepoint == IS_STRING
. Do not mix calls tonext()
andnextRange()
without callingreset()
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.
- Returns:
- true if there was another element in the set and this object contains the element.
- Status:
- Stable ICU 2.0.
-
nextRange
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. Ifcodepoint == IS_STRING
, the value is a string in thestring
field. Otherwise the value is a range of one or more code points fromcodepoint
tocodepointeEnd
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 unlesscodepoint == IS_STRING
. Do not mix calls tonext()
andnextRange()
without callingreset()
between them. The results of doing so are undefined.- Returns:
- true if there was another element in the set and this object contains the element.
- Status:
- Stable ICU 2.0.
-
reset
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 asset
is valid.- Parameters:
uset
- the set to iterate over.- Status:
- Stable ICU 2.0.
-
reset
public void reset()
Resets this iterator to the start of the set.- Status:
- Stable ICU 2.0.
-
getString
public String getString()
Gets the current string from the iterator. Only use after calling next(), not nextRange().- Status:
- Stable ICU 4.0.
-
-