這是我第一次與Java Iterable
一起工作,我遇到了一個問題,(i)使我發瘋,(ii)顯示我理解得很差!Java可迭代:爲什麼一個對象的迭代器迭代另一個對象的數據?
我有下面的類:
public class DocumentList implements Iterable<Document> {
private static ArrayList<Document> docs = null;
// other vars...
public DocumentList(InputStream in) {
// load list from in
}
// other methods...
public Iterator<Document> iterator() {
return new DocSetIterator();
}
private class DocSetIterator implements Iterator<Document> {
private int ix = 0;
public DocSetIterator() {
ix = 0;
}
public boolean hasNext() {
return ix < nDocs;
}
public Document next() {
if(this.hasNext()) {
Document current = docs.get(ix++);
return current;
}
throw new NoSuchElementException();
}
public void remove() {
throw new UnsupportedOperationException();
}
}
}
其中Document
是另一個類。然後,我有以下幾點:
DocumentList dList1 = new DocumentList(in1);
DocumentList dList2 = new DocumentList(in2);
Iterator<Document> it = dList2.iterator();
while(it.hasNext()) {
Document d2 = it.next();
// ...
}
我期待d2
是的dList2
的要素之一,而是我看到的dList1
元素的內容!這裏發生了什麼?
THX
什麼是'in1'和'in2'?請發佈[MCVE]。 –
爲什麼'docs'' static''? –