カスタム イテレータを作成しようとしていますが、利用できるチュートリアルがないため、Accumulo github ページで提供されているコードを調べました。
そこで、すべてのクラスが SortedKeyValueIterator を実装し、その関数をオーバーライドすることがわかりました。
これらの関数の役割と、SortedKeyValueIterator を実装する新しいクラスを作成するときにこれらの関数をオーバーライドするときのアプローチは何ですか。
これは私が理解しようとしていた RowFilter クラスのサンプル コードです。
public void init(SortedKeyValueIterator<Key,Value> source, Map<String,String> options, IteratorEnvironment env) throws IOException {
super.init(source, options, env);
this.decisionIterator = new RowIterator(source.deepCopy(env));
}
public SortedKeyValueIterator<Key,Value> deepCopy(IteratorEnvironment env) {
RowFilter newInstance;
try {
newInstance = getClass().newInstance();
} catch (Exception e)
{
throw new RuntimeException(e);
}
newInstance.setSource(getSource().deepCopy(env));
newInstance.decisionIterator = new RowIterator(getSource().deepCopy(env));
return newInstance;
}
このコードが何をするのか、別のクラスに SortedKeyValueIterator を実装させたい場合、これらの関数をどのようにオーバーライドすればよいのかを知りたいです。