我需要有关在程序中组织灵活数据结构的建议。 看,我必须组织数据结构,乍一看就像二维数组 就像
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/