Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 避免向数组中添加重复项_Java_Arrays - Fatal编程技术网

Java 避免向数组中添加重复项

Java 避免向数组中添加重复项,java,arrays,Java,Arrays,我想存储4个簇之间的距离,所以我取簇x和簇y之间的距离之和,反之亦然-因为簇x和簇y之间的距离!=簇y和簇x-然后将它们除以2,这样它将是无方向的 我现在面临的问题是复制。我怎样才能得到只有6个距离的结果,并避免在一开始就向阵列中添加重复项 注: 为了解决这个问题,我将集群与另一个集群之间的距离设置为二维数组,因为我无法使用一维数组来解决它 这个.clusterSize()等于4 for (int k = 0; k < this.clusterSize(); k++) { for

我想存储4个簇之间的距离,所以我取簇x和簇y之间的距离之和,反之亦然-因为簇x和簇y之间的距离!=簇y和簇x-然后将它们除以2,这样它将是无方向的

我现在面临的问题是复制。我怎样才能得到只有6个距离的结果,并避免在一开始就向阵列中添加重复项

注:

  • 为了解决这个问题,我将集群与另一个集群之间的距离设置为二维数组,因为我无法使用一维数组来解决它

  • 这个.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;
            }
        }
    }
    
    for(int k=0;k

不确定这是否是最佳方式,但您可以检查阵列是否匹配

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

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

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;
    }
}
for(int k=0;k
我甚至无法想象x和y之间的距离如何不等于y和x之间的距离。@AlvinThompson如果距离函数不是对称的,比如在有向图中:)为什么不在
j=k+1
处开始内环呢?@AndyTurner非常感谢,它解决了我的问题。当然,将它添加到for中,这样您就可以在索引处使用i++扫描整个数组。(这是我第一次在这里回答一些问题,因此我很抱歉格式不正确)如果您的代码发现元素已经在数组中,它会将元素添加到数组中。你确定这就是你的意思吗?