我有一个Java TreeSet
:
TreeSet<Integer> tsA = new TreeSet<Integer>();
我在这个TreeSet上声明了一个迭代器,如下所示:
Iterator<Integer> tsAI = tsA.iterator();
现在,tsAI
包含hasNext()
和next()
等方法。但是,我想在名为seek(num)
的迭代器中添加一个自定义方法和原始方法,它将迭代器放在TreeSet中所需的num
。
所以说如果我的TreeSet
有值(1, 2, 3, 4, 5, 7)
且我在2,我调用seek(5)
,迭代器应该跳到5.我怎么能这样做?
答案 0 :(得分:1)
答案 1 :(得分:0)
你想要做的最接近你应该做的是写一个静态方法,看起来像<T> static void advance(Iterator<Integer>, Integer)
,它将另一个迭代器推进到一个特定的位置。
您也可以编写一个迭代器装饰器,使用它来执行类似new MyIterator(treeSet.iterator())
的操作,您可以使用MyIterator
类提供的其他方法。
你可能不应该做的是尝试子类化TreeSet
或更改你从TreeSet
中获得的迭代器。相反,在这些迭代器上运行或装饰它们是可行的方法。
答案 2 :(得分:0)
不确定这是不是一个好主意,但你可以从这样的事情开始:
import java.util.Iterator;
interface MyIterator extends Iterator {
void seek(int n);
}
class MyIteratorImpl implements MyIterator {
@Override public void seek(int n) {
// ...
}
@Override public boolean hasNext() {
// ...
return false;
}
@Override public Object next() {
// ...
return null;
}
@Override public void remove() {
// ...
}
}