我有这堂课:
public class docInfo {
private int freq;
private HashMap<String, Double> m = new HashMap<String, Double>();
}
private Map<String, docInfo> m;
我想迭代所有docInfo的Double值并更改它:
docInfo documento;
for (Map.Entry<String, docInfo> entry : m.entrySet()) {
word = entry.getKey();
docs = entry.getValue(); // docs map
for (Map.Entry<String, Double> entry2 : docs.getM().entrySet()){
score = entry2.getValue();
temp = score;
double log = Math.log10(docs.getFreq());
double tfw = log+cons;
docs.changeScoreTo(entry2.getKey(), tfw);
//entry2.setValue(tfw);
}
}
它正在运行,问题是,运行时间过长,我认为我的代码不适合这项工作。任何帮助将不胜感激,
答案 0 :(得分:0)
你真的应该使用分析器来理解为什么代码很慢。这比猜测更好。但是,如果我不得不猜测,我会说问题是非常大的地图(27K)构建和检索速度很慢。默认的哈希表对于27K条目来说太小了,因此在组装时你会进行大量的重复操作。
尝试
private HashMap<String, Double> m = new HashMap<String, Double>(5000);
并尝试使用剖析器告诉我们哪些线路会循环使用。