Java中HashMap的二维iterable键

Java中HashMap的二维iterable键,java,hashmap,iteration,multidimensional-array,Java,Hashmap,Iteration,Multidimensional Array,我要处理的是相当大一部分的二维数据,每个数据都有一个x,y坐标,然后是一个位于该坐标的数据数组 我现在所做的只是使用一个HashMap循环遍历它,用一个方法检查坐标以知道何时转到下一个“行”,因此如果x的数据是[0-10],那么它测试11和倍数以计算在哪里显示新行。这相当麻烦,我希望有一个更简单的解决方案,但我还没有在谷歌上找到一个合适的解决方案 我尝试对以下伪代码执行一些操作: HashMap thisMap=key=IntArray[]],value=IntArray[] 在这里,我可以设置

我要处理的是相当大一部分的二维数据,每个数据都有一个x,y坐标,然后是一个位于该坐标的数据数组

我现在所做的只是使用一个HashMap循环遍历它,用一个方法检查坐标以知道何时转到下一个“行”,因此如果x的数据是[0-10],那么它测试11和倍数以计算在哪里显示新行。这相当麻烦,我希望有一个更简单的解决方案,但我还没有在谷歌上找到一个合适的解决方案

我尝试对以下伪代码执行一些操作: HashMap thisMap=key=IntArray[]],value=IntArray[] 在这里,我可以设置一个特定的2-d Int数组作为整个事件的键,然后通过循环赋值,并以一种易懂的方式轻松地获取值。我能想到的最接近的事情是PHP如何处理多维数组和foreach,您可以在其中嵌套foreach循环,但我不确定这在Java中如何工作

目标是最终能够编写两个方法,一个将沿着X轴第一个数字迭代,然后继续下一行;另一个将其作为“帧”并在Y轴上迭代。我不想让任何人为我写这些,甚至是HashMap代码,但我希望在不重写任何内容的情况下,只要Java SE中提供的标准库是可能的,我就可以为如何做到这一点指明正确的方向。如果没有,那么希望能为如何安全超越提供指导

这里的另一个问题是数据集非常大,我最初尝试编写自己的元组类,但第一次使用它时,堆内存用完了,这就是为什么我要坚持使用单个二维基本int数组

编辑

我发现:

然而,他们似乎并没有试图实现同样的目标

编辑2


另一个复杂问题是Y轴中的关键点不是顺序的,尽管它们是从低到高排列的。

听起来您的要求涉及混合模型和视图,因为您的视图包括x,Y坐标,并且您有与每个x,Y坐标相关联的数据。虽然我通常不尝试混合模型和视图,但您的需求让我想到了一个解决方案。writeableraster是一个1d像素数组,但它从窗口的左上角开始,迭代行和列,直到到达右下角。我认为这是一列一列的,但可能是一行一行的。通过将可写光栅的索引与窗口的宽度/高度协调,可以计算行和列

可写光栅非常快,因为您直接写入像素阵列。然后通过连接到JPanel或画布的BuffereImage和/或图形对象将其发送到gui

至于迭代结构,我使用ArrayList中的ArrayList来处理多变量结构。ArrayList的优点在于,它们可以是可变长度的,而不像数组,在实例化时需要定义数组的长度。但是,无论您使用嵌套的ArrayList还是嵌套的ArrayList,都可以根据需要嵌套任意多的层来处理数据结构

如果您的代码看起来复杂而繁琐,那么将其分解为许多方法可能是有意义的。当我用java编写复杂的算法时,我试图遵循一条规则,即每个方法的代码不超过十行。我在一个流程图中为每个方法绘制了一个方框,箭头指向算法循环时方法之间的控制流

这回答了你的问题吗?很难理解你问题的要点,因为你在写的时候似乎还在思考