我想在地圖中獲得距離,但我一直得到java堆錯誤......我不明白爲什麼甚至特別是當數據存儲在地圖中。Java堆錯誤
這裏是我的代碼:
Map<Integer, double[]> getDistanceTable(Map<String, Double[]> vectors) {
Map<Integer, double[]> distance = new HashMap<>();
int size = vectors.keySet().size();
for(int i=0; i<vectors.keySet().size(); i++) {
double[] features = new double[size];
int index = 1;
features[0] = 0;
for(int j = i+1; j<vectors.keySet().size(); j++) {
features[index] =new QueryClustering().getDistance(vectors.get(i), vectors.get(j));
index++;
}
distance.put(i, features);
size--;
}
return distance;
}
}
也許是因爲新QueryClustering()getDistance的返回一個大對象,你必須在這種類型的太多的實例。無法放入堆中的映射 –
請勿在每次迭代中創建新的QueryClustering對象。嘗試在任何'for'之外創建它,並在'for'子句中調用方法getDistance(...)。 –
請您提供更多詳細信息,包括確切的錯誤信息?我可以看到的一個(無關的)問題是你正在做'vectors.get(i)'。 'i'是一個'int',但'vectors'的關鍵類型是'String'。 –