java - 距离矩阵实现

标签 java arrays hashmap

我有两个这样的列表对象: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/

相关文章:

java - 从java Map生成Json

PHP/MySQL - 如果变量不存在则更新数组

java - 追加到存储在外部文件中的ArrayList

java - 尽管 HashMap 是一个无序集合,但为什么它会自动对字符类型键进行排序?

hash - 如何从可哈希的库中创建一个不可哈希的、类 C 的枚举?

java - 字符串 HashMap 中的字节数组

java - RequestFactory 没有填充我的实体代理的所有字段

java - WebDriver.getWindowHandle() 方法

java - 忽略 XML Unmarshal Java Spring 上的 ESC 特殊字符

c - 访问结构中的数组元素时出错