我有两个列表对象:A = {o1,o2,o3,... on},B = {p1,p2,p3,... pm}(m,n已定义)。
我想存储从A到B的对象之间的距离,例如:d(o1,p1),d(o1,p2)...,d(o1,pm),d(o2,p1),.. ..,d(上,下午)。
我使用一个n行×m列的矩阵来存储这些距离,从o1到on的行和从p1到pm的行的列
但问题是我想实现这样的功能:
public double GetDistance (object obj1, object obj2)
例如,如果我调用GetDistance(o1,p4),它将返回像tis这样的值:DistanceMatrix [0] [3] = 0.6。
那么我们如何在这种情况下实现为了从两个对象o1,p4我们可以参考矩阵中相应的行和列是0,3(如果我必须使用矩阵来存储距离)。 / p>
答案 0 :(得分:1)
您可以使用HashMap<object, Integer> pMap and oMap
,其中键是对象,值是列或行的索引:
Object[] A = //{o1, o2, o3, o4, ... on};
Object[] B = //{p1, p2, p3, p4, ... pm};
HashMap<Object, Integer> oMap = new HashMap<Object, Integer>();
HashMap<Object, Integer> pMap = new HashMap<Object, Integer>();
for(int i = 0 ; i < A.length ; i++) {
Object o = A[i];
oMap.add(o, i);
}
for(int i = 0 ; i < B.length ; i++) {
Object p = B[i];
pMap.add(p, i);
}
现在您可以构建距离矩阵,并使用以下命令访问值:
public double GetDistance (object obj1, object obj2) {
//double[][] d = distanceMatrix;
return d[oMap.get(objt1)][pMap.get(objt2)];
}