Как вызвать метод для другого метода в том же классе - PullRequest
0 голосов
/ 13 марта 2019

У меня есть метод countDirectSimility, в этом методе я хочу вызвать другой метод, но мне трудно его вызвать, можете ли вы мне помочь?

здесь исходный код, я назову имя методаcountAggrIntStrength

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

    for (int i = 0; i < matrixEgoNetwork.length; i++) {

//here the trouble 
        if (matrixEgoNetwork[i][0]==this.countAggrIntStrength(*here the error*) && matrixEgoNetwork[i][index]!=0) {
            sim++;

        }
    }

    return sim;

}

это метод, который я хочу вызвать

public double countAggrIntStrength(Map<DTNHost, ArrayList<Double>> neighborsHist) {
    double AggrIntStrength = 0;
    double lambda = 0, sigma = 0;
    for (Map.Entry<DTNHost, ArrayList<Double>> data : neighborsHist.entrySet()) {
        lambda = data.getValue().get(0);
        sigma = data.getValue().get(1);

        AggrIntStrength = this.countAgrIntStrength(lambda, sigma);
    }

    return AggrIntStrength;
}

другая проблема состоит в том, что структура данных, которую я хочу ввести в this.countAggrIntStrength (), находится в другом классе,ты можешь мне помочь?

Ответы [ 3 ]

0 голосов
/ 13 марта 2019

Некоторые классы структуры данных, в которых хранится карта соседей.

public class DataStructure {

    Map<DTNHost, ArrayList<Double>> neighborsHist;

    public Map<DTNHost, ArrayList<Double>> getNeighborsHist() {
        return neighborsHist;
    }

    public void setNeighborsHist(Map<DTNHost, ArrayList<Double>> neighborsHist) {
        this.neighborsHist = neighborsHist;
    }

    public void businessLogicFunc() {
        //business logic function.
        ...
    }
}

Внутри вашего метода countDirectSimility вызывается метод get.

public DataStructure dataStructure;

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

    for (int i = 0; i < matrixEgoNetwork.length; i++) {

        if (matrixEgoNetwork[i][0]==this.countAggrIntStrength(dataStructure.getNeighborsHist()) && 
            matrixEgoNetwork[i][index]!=0) {
            sim++;

        }
    }

    return sim;

}
0 голосов
/ 13 марта 2019

Использование статическое

public static double countAggrIntStrength...

И в вашем методе не требуется this.countDirectSimility, вы можете просто напрямую вызвать метод countDirectSimility.

0 голосов
/ 13 марта 2019

Получить структуру данных из другого класса с помощью метода получения:

otherClassName.getMap()

Затем передать его в свой метод в первом классе, либо в вызове метода:

countAggrIntStrength(otherClassName.getMap());

Или, сохранив сначала:

Map<DTNHost, ArrayList<Double>> mapToPass = otherClassName.getMap();
countAggrIntStrength(mapToPass)

Вам понадобится геттер в другом классе:

public Map getMap(){
    return variableThatStoresTheMap;
}

, если у вас его еще нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...