【发布时间】:2014-01-02 16:52:38
【问题描述】:
我正在尝试处理相当大部分的二维数据,每条数据都有一个 (x, y) 坐标,然后是位于该坐标的数据数组。
我现在正在做的只是使用HashMap 循环遍历它,并使用一种方法检查坐标以知道何时转到下一个“行”(因此,如果数据是 [0-10 ] 对于x 然后它测试11(和倍数)以计算在哪里显示新行)。这相当麻烦,我希望有一个更简单的解决方案,但我无法在 Google 或 SO 上找到适合的解决方案。
我想要做的是以下伪代码:
HashMap thisMap = (key = IntArray[][], value = IntArray[] )
我可以将特定的二维 Int 数组设置为整个事物的键,然后以可迭代的方式通过循环分配值(并同样轻松地获取值)。我能想到的最接近的事情是PHP 如何处理多维数组和foreach() 可以在其中嵌套foreach() 循环,但我不确定这在Java 中如何工作。
最终目标是能够编写两个方法,一个将沿着X-axis(第一个数字)进行迭代,然后继续下一行;另一个将其作为“框架”并迭代Y-axis。我不希望任何人为我编写这些,甚至是 HashMap 代码,但我希望仅使用 Java SE 中可用的标准库就如何做到这一点(如果可能的话)指出正确的方向而不是覆盖任何东西。如果没有,那么希望指导如何安全地覆盖。
注意
这里的另一个问题是数据集相当大,我最初尝试做的是自己写Tuple class,但是我第一次使用它时堆内存用完了,这就是为什么我'我试图为此坚持使用单个二维原始 int 数组。
编辑
我找到了这些: Java usage of HashMap or Map with multidimensional arrays
Java HashMap associative multi dimensional array can not create or add elements
How to implement a Map with multiple keys?
但是他们似乎并没有试图达到同样的目的。
编辑 2
另一个复杂的问题是Y-axis 中的键不是连续的,尽管它们是按从低到高的顺序排列的。
【问题讨论】:
标签: java hashmap iteration multidimensional-array