リストイテレータを特定の位置に移動してそこから移動したいと考えています。リストイテレータの特定のアイテムを探す方法
私はチェックしましたが、コレクションに利用可能なものがあればできませんでした。
以下は、うまく動作した実装ですが、これを行うにはより良い方法があるかどうかを知りたいと思います。
class FileIterator implements ListIterator<String>{
ListIterator<String> iterator = null;
List<String> fileList;
public FileIterator(List<String> fileList) {
this.fileList=fileList;
iterator=fileList.listIterator();
}
@Override
public void add(String data) {
iterator.add(data);
}
@Override
public boolean hasNext() {
return iterator.hasNext();
}
@Override
public boolean hasPrevious() {
return iterator.hasPrevious();
}
@Override
public String next() {
return iterator.next();
}
@Override
public int nextIndex() {
return iterator.nextIndex();
}
@Override
public String previous() {
return iterator.previous();
}
@Override
public int previousIndex() {
return iterator.previousIndex();
}
@Override
public void remove() {
iterator.remove();
}
@Override
public void set(String data) {
iterator.set(data);
}
public boolean seek(String data){
iterator=fileList.listIterator();
while(iterator.hasNext()){
if(iterator.next().equals(data))
return true;
}
//gives the first element by default
iterator=fileList.listIterator();
return false;
}
}
_ "でも、できなかったのですか?"何が起こった?例外はありましたか?もしそうなら、完全なスタックトレースを投稿してください。 –
なぜインスタンス変数として 'fileList'が必要なのかわかりません。実際に' class'が必要なのはなぜですか?Guavaの['Iterators.find'](https ://google.github.io/guava/releases/16.0/api/docs/com/google/common/collect/Iterators.htm)あなたのメソッドのロジックは完全に狂っています。このメソッドを呼び出すと、 FileIterator'を実行して検索を続行するのではなく、何も見つからなければランダムに開始にリセットします! –
@Boris the Spider:ユーティリティメソッドのおかげでイテレータの再設定に関して - 私がしようとしている機能の一部また、Iterators.findメソッドが動作していない場合は、イテレータをn + mの位置に置いたときにn番目の要素にシークしたい場合は – Praveen