2

我想从其他类调用数据结构,但我在这里发现了一个问题,你能帮我吗?

这里是源代码

SimBetWithFairRouting 类的数据结构

public  Map<DTNHost, ArrayList<Double>> neighborsHistory;

我会在 NeighbourhoodSimilarity 类的这个方法中调用它

private double countDirectSimilarity(double[][] matrixEgoNetwork, int index) {
    double sim=0;

    for (int i = 0; i < matrixEgoNetwork.length; i++) {
//here the problem
        if (matrixEgoNetwork[i][0]==this.countAggrIntStrength(*i will call it in here*) && matrixEgoNetwork[i][index]==1) {
            sim++;

        }
    }

    return sim;

}

有什么办法可以在不将地图更改为静态形式的情况下完成这项工作?线索:在 SimBetWithFairRouting 类中有复制方法,你能帮帮我吗?

4

3 回答 3

1

要访问地图,您必须将该类导入您编写该方法的类。并且要在不创建实例的情况下访问它,您必须将其设为静态。

private double countDirectSimilarity(double[][] matrixEgoNetwork, int index) {
    double sim=0;

    for (int i = 0; i < matrixEgoNetwork.length; i++) {
            if (matrixEgoNetwork[i][0]==this.countAggrIntStrength(SimBetWithFairRouting.neighborsHistory) && matrixEgoNetwork[i][index]==1) {
            sim++;

        }
    }

    return sim;

}

使您的地图静态化

public static Map<DTNHost, ArrayList<Double>> neighborsHistory;
于 2019-03-14T06:31:30.470 回答
0

首先导入 SimBetWithFairRouting 类所在的包。然后将该地图(neighborsHistory)设为静态。

并访问该地图,您可以使用

    SimBetWithFairRouting.neighborsHistory

这是(ClassName.MapName)

于 2019-03-14T06:20:56.450 回答
0

从NeighbourhoodSimilarity扩展SimBetWithFairRouting类还可以让您访问neighborsHistory(如果SimBetWithFairRouting类不是最终类)。

于 2019-03-14T07:04:43.640 回答