我试图实现一个返回矩阵字符串的方法。字符串应该是
[0, 1, 2]
[3, 4, 5]
[6, 7, 8]
但它印的像
[0, 1, 0]
[3, 4, 3]
[6, 7, 6]
问题是迭代器的next()方法。
@Override
public Integer next() {
if (!hasNext())
throw new NoSuchElementException();
else if(columnIndex == dataset[rowIndex].length-1){
return dataset[rowIndex++][columnIndex = 0];
}else {
return dataset[rowIndex][columnIndex++];
}
}
它使 columnIndex = 0
之前 rowIndex++
完成了。我试着换衣服 ++rowIndex
但我没能达到我想要的。那么,有办法吗 columnIndex = 0
同时 rowIndex++
工作,而不是 ++rowIndex
?
2条答案
按热度按时间ih99xse11#
行中似乎需要后赋值(类似于后增量)这样的操作:
即,当前值
columnIndex
返回,然后将其重置为0。这样的操作对基元不可用
int
但是阶级AtomicInteger
Package 内java.util.concurrent.atomic
提供与方法类似的功能getAndSet()
so方法next()
如果rowIndex
以及columnIndex
已更改为AtomicInteger
:测试:
输出:
f1tvaqid2#
如果你想读难懂的魔术,可以使用整数除法和模运算:
哪里
index
从0开始。这种方法仅适用于矩形阵列,但我假设它是数学意义上的矩阵,因此所有行的元素数都相同。