java - 二维数组/结构体问题

标签 java oop

我需要有关在程序中组织灵活数据结构的建议。 看,我必须组织数据结构,乍一看就像二维数组 就像

double[][] arr = new double[10][10];

如果您需要设置或获取此数组的某些元素,您将编写类似

double x=arr[i,j]; // arr[i,j]=y;

其中 i 和 j 是整数

但是在我的程序中我需要类似的东西

double k=arr[obj1,obj2]

其中 obj1 和 obj2 是对象

我有一个想法 - HashMap 可以解决我的问题

所以它看起来像

class Coordinates {
      Object1 obj1;
      Object2 obj2;
      //TODO override equals() method
      Coordinates(Object1 obj1, Object2 obj2) {
           this.obj1=obj1;
           this.obj2=obj2;
      }
}
...
HashMap<Coordinates, Double> semiTwoDimArray=new HashMap<Coordinates, Double>();

元素的设置和获取看起来像

semiTwoDimArray.put(new Coordinates(obj1, obj2), 3.14);

得到可能是这样的

double pi = semiTwoDimArray.get(new Coordinates(obj1, obj2));

但对我来说: 1)这样的实现存在遍历行或列的问题(操作过多) 2)看起来不优雅

有人可以建议我更好的解决方案吗?

最佳答案

您可以将结构包装到一个类中,并提供漂亮且干净的 get(Object,Object)set(Object,Object,double) 方法。

这样,不优雅的代码将包含在类中,并且不需要每次访问结构时都重复。

如果您发现原始选择不是最优的,这也将使更改底层数据结构变得容易。

关于java - 二维数组/结构体问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5354659/

相关文章:

java - 从 webapp 执行外部 Java 程序

c++ - Catch-all 处理程序检测 C++ 中的子类异常

java - 使用 OO 原则重构过程方法

Java Swing/AWT - 使用上下文菜单绘制对象

java - 自新更新以来从 libgdx 加载场景重叠 2d

javascript - 实例变量与方法参数

php - oop php 数据库访问的最佳实践是什么?

java - 如果子类没有构造函数,如何通过第三方类(不扩展抽象类)管理抽象类的子类?

java - 尝试按值对链接的 HashMap <Character, Integer> 进行排序

java - 使用 Jersey/Grizzly 的基本 HTTP 身份验证