我是一個Java初學者,我必須從Iterator<Iterator<Integer>>
這樣的東西中接收數值。例如,我們可能有:通過二維數組迭代,就好像它是一維數組一樣使用迭代器
{{1, 2}, {3, 4}, {5, 6}}
的next()
結果應該是1
。如果我們再試一次next()
- 2
,則 - 3
,4
等等。就像從1D數組中逐個獲取值,而是從2D數組中獲取值。我們應該不要複製什麼。所以,我寫了下面的一些不好的代碼:
public class IteratorNext {
private Iterator<Iterator<Integer>> values = null;
private Iterator<Integer> current;
public IteratorNext(Iterator<Iterator<Integer>> iterator) {
this.values = iterator;
}
public int next() throws NoSuchElementException {
current = values.next();
if (!current.hasNext()) {
values.next();
}
if (!values.hasNext() && !current.hasNext()) {
throw new NoSuchElementException("Reached end");
}
return current.next();
}
}
該代碼是不正確的,因爲next()
結果是1
,然後3
,然後5
因爲這裏異常的。如何解決這個問題?
是否使用'Java的8'?然後有一個更簡單的方法來做到這一點。 – CKing