我有两个这样的列表对象: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(on,pm)。
我使用 n 行 x m 列的矩阵来存储这些距离,行从 o1 到 on 排序,列从 p1 到 pm 排序
但问题是我想实现这样的功能:
public double GetDistance (object obj1, object obj2)
例如,如果我调用 GetDistance(o1, p4),那么它将返回如下值:DistanceMatrix[0][3] = 0.6。
那么在这种情况下我们如何实现,以便从两个对象 o1, p4 我们可以引用矩阵中相应的行和列是 0, 3(如果我必须使用矩阵来存储距离)。
最佳答案
您可以使用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)];
}
关于java - 距离矩阵实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36454538/