【发布时间】:2017-06-21 15:33:22
【问题描述】:
我是 Java 初学者,我必须从 Iterator<Iterator<Integer>> 之类的东西中获取值。例如,我们可能有:
{{1, 2}, {3, 4}, {5, 6}}
next() 的结果应该是1。如果我们再尝试一次next() - 2,然后 - 3、4 等。就像从一维数组中一一获取值,但从二维数组获取值。我们不应该不复制任何东西。所以,我在下面写了一些糟糕的代码:
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吗?那么有一种更简单的方法可以做到这一点。
标签: java arrays multidimensional-array iterator