목록 반복기를 특정 위치로 이동하여 목록 반복기를 이동하려고합니다.목록 반복기에서 특정 항목을 찾는 방법
내가 체크했는데 컬렉션에 사용 가능한 것이 있으면 그럴 수 없었다.
다음은 올바르게 작동하는 구현입니다.하지만이를 수행하는 데 더 좋은 방법이 있는지 알고 싶습니다.
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