Ich möchte den Listen-Iterator zu einer bestimmten Position suchen, um einen von dort zu verschieben.So suchen Sie nach einem bestimmten Element in Liste Iterator
Ich habe geprüft, ob da irgendwas in den Sammlungen vorhanden ist aber ich konnte das nicht.
Unten ist die Implementierung, die ich versuchte, die funktioniert gut, aber ich würde gerne wissen, ob es eine bessere Möglichkeit, dies zu tun.
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;
}
}
_ "aber ich konnte nicht" _ - warum nicht? Was ist passiert? Hast du eine Ausnahme bekommen? Wenn dies der Fall ist, posten Sie eine komplette Stapelverfolgung. –
Ich sehe nicht, warum Sie eine 'fileList' als Instanzvariable brauchen, und ich sehe nicht, warum Sie wirklich Ihre' Klasse' brauchen - eine Hilfsmethode (wie Guava's ['Iterators.find'] (https : //google.github.io/guava/releases/16.0/api/docs/com/google/common/collect/Iterators.htm) wäre ausreichend Die Logik Ihrer Methode ist völlig verrückt - das Aufrufen der Methode setzt die '' zurück FileIterator' und sucht, anstatt weiterzumachen, und wenn nichts gefunden wird, wird es zufällig an den Anfang zurückgesetzt! –
@Boris the Spider: Danke für die Utility-Methode.In Bezug auf das Zurücksetzen des Iterators - seinen Teil der Funktionalität, die ich versuche Die Methode Iterators.find funktioniert nicht Wenn ich nach dem n-ten Element suchen will, wenn ich den Iterator an der Position n + m habe – Praveen