在没有收到 IndexOutOfBoundsException
的情况下,我需要将一个对象列表添加到网格中。每个对象都有两个与之关联的数字,对应于它在网格中的 index
和 column
位置。可以有 3 列和无限行。我需要为此网格调用 add()
方法,但必须以正确的顺序调用,所以:
(0,0),(0,1),(0,2),(1,0)...
因此网格看起来像这样:
0 1 2
0 x x x
1 x x x
2 x x x
3 x x x
我还必须考虑到某个位置不存在对象的可能性。例如:
A) x x x B) x x C) x x x
x x x x x x x
x x x x
x x x x
x x
这能做到吗?我不确定从哪里开始。
最佳答案
也许您应该考虑另一种按(行,列)存储对象的数据结构。它的界面看起来像
public interface GridModel {
void set(int row, int column, Object o);
Object get(int row, int column)
}
而且您可以使用列表的列表来存储数据。 List<List<Object>>
或者,作为 Mark Peters建议,一个稀疏矩阵
如果使用单元格值很重要,请添加单元格迭代器方法。一个简单的实现如下所示:
public Iterable<Object> cellIterator() {
final List<Object> items = new java.util.ArrayList<Object>();
for(final List<Object> row : cells) {
for(final Object cell: row) {
items.add(cell);
}
}
return items;
}
关于java - Java中的排序循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4659166/