java - Java中的排序循环

标签 java sorting

在没有收到 IndexOutOfBoundsException 的情况下,我需要将一个对象列表添加到网格中。每个对象都有两个与之关联的数字,对应于它在网格中的 indexcolumn 位置。可以有 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/

相关文章:

java - 带有 Java 驱动程序的 MongoDB 聚合

java - 无法合并 dex - 如何修复?

java - 名称 'File' 在库 'dart:html' 和 'dart:io' 中定义

Python:使用另一个列表作为顺序对列表进行排序

javascript - 将 jquery 对象数组转换为 html

java - JPA:无法反序列化

c++ - 递归合并排序函数给出错误的输出

c++ - Typedef 的问题——需要忽略某些代码

C-排序大型2D整数数组的最快方法

java - 无法从另一个 ASyncTask 调用 ASyncTask