避免向数组

时间:2016-03-09 21:35:30

标签: java arrays

我想存储4个簇之间的距离,所以我得到了簇x和簇y之间距离的总和,反之亦然 - 因为簇x和簇y之间的距离y!=簇y和簇x-然后除它们是2,所以它是无方向性的。

我在这里面临的问题是重复。如何最终只有6个距离,并避免首先在阵列中添加重复项。

注意:

  • 我使DistanceBetweenClusterToAnother成为一个二维数组,目的是解决这个问题,因为我无法用一维数组解决它。

  • this.clusterSize()等于4。

    for (int k = 0; k < this.clusterSize(); k++) {
        for (int j = 0; j < this.clusterSize(); j++) {
            if (k != j) {
                DistanceBetweenClusterToAnother[k][j] = GADOfCluster1toCluster2[k][j] + GADOfCluster1toCluster2[j][k];
                DistanceBetweenClusterToAnother[k][j]= DistanceBetweenClusterToAnother[k][j]/2;
            }
        }
    }
    

2 个答案:

答案 0 :(得分:0)

不确定它是否是最佳方式,但您可以检查数组是否匹配。

if (valueYouWantToCheck == Array.getIndex(i))
    Array.add(valueYouWantToCheck);

答案 1 :(得分:0)

在外循环的当前位置之后启动内循环。此外,您可以在一行中取平均值:

for (int k = 0; k < this.clusterSize(); k++) {
    for (int j = k + 1; j < this.clusterSize(); j++) {
        DistanceBetweenClusterToAnother[k][j] = (GADOfCluster1toCluster2[k][j] + GADOfCluster1toCluster2[j][k]) / 2;
    }
}