[英]Java iterate over hashmap 2 levels
我有这个课:
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);
}
}
它正在工作,问题是,它花费的时间太长,我认为我的代码不是最合适的工作。 任何帮助,将不胜感激,
您确实应该使用探查器来了解为什么代码很慢。 比猜测更好。 不过,如果我不得不猜测,我会说问题是很大的地图(27K)生成和检索都很慢。 默认的哈希表对于27K条目来说太小了,因此在组装时要进行大量的哈希处理。
尝试
private HashMap<String, Double> m = new HashMap<String, Double>(5000);
并尝试使用探查器让我们知道哪些行会吃掉周期。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.