我认为没有任何容易为joda-time或Java Calendar API做过的迭代器,但是对于joda而言,它应该很容易实现.例如,在几个月的停顿后重新熟悉joda之后,我在大约10分钟内做到了这一点:
public class InstantIterator implements Iterator<Instant>,
Iterable<Instant> {
private Instant current;
private final Instant original;
private Duration skip;
private List<Instant> skipThese;
public InstantIterator(Instant startFrom, Duration skip) {
this.current = original = startFrom;
this.skip = skip;
skipThese = new Vector<Instant>();
}
public boolean hasNext() {
return true;
}
public Instant next() {
Instant currentNext = current.toInstant();
current = current.plus(skip);
while (skipThese.contains(currentNext)) {
currentNext = current.toInstant();
current = current.plus(skip);
}
return currentNext;
}
public void remove() {
skipThese.add(current.toInstant());
}
public Iterator<Instant> iterator() {
return this;
}
public void rewind() {
current = original.toInstant();
}
public void resetRemoved() {
skipThese.clear();
}
public void resetIterator() {
rewind();
resetRemoved();
}
}
Run Code Online (Sandbox Code Playgroud)
Joda时间很棒:-)
归档时间: |
|
查看次数: |
2120 次 |
最近记录: |