迭代函数
Java 序列迭代器方法用于提取和遍历对象的序列元素,确定序列元素类型、大小以及在迭代器序列中的位置,确定序列的分块大小,并且对于 RLE 编码的序列,确定重复计数或将其解码为非 RLE 序列。
迭代器操作可以是以下之一:
- public int get(Object buffer):将序列元素提取到提供的数组缓冲区中。此数组应与序列元素类型相同。返回实际提取的元素数量(如果到达数组末尾,则可能小于数组大小)
- public Object next():获取序列中的下一个元素。返回序列中下一个元素的对象包装器,如果已到达序列末尾则返回 null 。
- public int nextInt():获取序列中的下一个整数元素。返回序列的下一个元素值(如果迭代器中没有更多元素,则抛出 NoSuchElementException 异常)
- public long nextLong():获取序列中的下一个长整型元素。返回序列的下一个元素值(如果迭代器中没有更多元素,则抛出 NoSuchElementException 异常)
- public float nextFloat():获取序列中的下一个浮点元素。返回序列中的下一个元素值(如果迭代器中没有更多元素,则抛出 NoSuchElementException 异常)
- public double nextDouble():获取序列中的下一个双元素。返回序列中的下一个元素值(如果迭代器中没有更多元素,则抛出 NoSuchElementException 异常)
- public byte[] nextBytes():获取序列中的下一个字符元素。返回序列中的下一个元素值(如果迭代器中没有更多元素,则抛出 NoSuchElementException 异常)
- public String nextString():获取序列中的下一个字符串元素。返回序列中的下一个元素值(如果迭代器中没有更多元素,则抛出 NoSuchElementException 异常)
- public Date nextDate():获取序列中的下一个日期元素。返回序列中的下一个元素值(如果迭代器中没有更多元素,则抛出 NoSuchElementException 异常)
- public long firstPosition():获取第一个序列元素的位置。返回此序列起始元素的位置(包含该元素)
- public long lastPosition():获取最后一个序列元素的位置。返回此序列结束处(包含该元素)的元素位置
- public long nextPosition():返回后续调用 next() 或 nextTile() 方法所返回元素的位置。
- public boolean nextTile():将迭代器推进到下一个瓦片。如果迭代器成功推进则返回 true,否则返回 false。
- public int elemSize():返回序列元素大小
- public Object tileItems():获取当前图块的项目。返回包含图块项目的数组
- public Sequence.Type type():返回底层序列的类型
- static native public boolean isRLE():检查底层序列实现是否使用了 RLE 格式(在这种情况下,每个序列元素都关联有一个重复计数器)
- public int itemRepeatCount(int i):获取该图块项的 RLE 计数(对于非 RLE 序列实现,此方法始终返回 1)
- public SequenceIterator rleDecode():将 RLE 序列解码为非 RLE 序列(对于非 RLE 实现,此方法只是复制序列迭代器)
- public void reset():将序列位置重置(回退)到第一个元素
- public void close():关闭并释放序列内部资源
示例
以下是一个使用 next() 方法进行序列迭代的示例代码片段:
private static int printFloatSequence(Quote quote, SequenceIterator iterator)
{
System.out.print(quote.symbol + ": {");
Object elem;
int i;
for (i = 0; (elem = iterator.next()) != null; i++)
{
if (i != 0)
System.out.print(",");
System.out.format("%.3f", elem);
}
System.out.println("}");
return i;
}