次のシナリオがあります。既存のイテレータがIterator<String> it
あり、その頭上で反復します(たとえば、フラグが立てられた要素である最初のk個の要素、つまり「*」で始まる要素)。フラグが立てられた要素が終了したことを知る唯一の方法は、(k + 1)番目の要素がフラグが立てられていないことに気付くことです。
問題は、これを行うと、イテレータit
が次のへの呼び出しで最初の値を提供しなくなることですnext()
。
このイテレータは唯一の引数であり、その署名と実装を変更しないようにしたいので、このイテレータをメソッドに渡したいと思います。私はこれができることを知っています:
public void methodAcceptingIterator(Iterator<String> it) //current signature
//change it to
public void methodAcceptingIterator(String firstElement, Iterator<String> it)
しかし、これは回避策/ハックがコードの優雅さと一般性を低下させるように見えるので、私はこれをしたくありません。
この問題をどのように解決できるかについてのアイデアはありますか?