【发布时间】:2020-05-20 15:10:28
【问题描述】:
我有一个ArrayList<String> 和一个Hashtable<String, Double>。因此,当我将 arraylist 与哈希表进行比较时,如果找到 key(string),我想获取 value(double) 并在比较所有 arraylist 时找到最后的总值。但它总是给分数 0。
有代码
ArrayList<String> Trigram = Trigrams.GenerateTrigrams(extra, 3);
// System.out.print(Trigram);
Hashtable<String, Double> map = readModleFile("Models//EnglishModel.txt");
double score = 0;
for (String temKey : Trigram) {
if (map.contains(temKey)) {
Double value = map.get(temKey);
score = score + value;
} else {
score = 0;
}
}
System.out.print(score);
【问题讨论】:
-
删除
else。 -
只是一个建议-我认为您的循环可以简化为
for (String temKey : trigram) if (map.contains(temKey)) score += map.get(temKey); -
它仍然只打印出 0.0
-
double score = Trigram.stream().filter(map::contains).mapToDouble(map::get).reduce(Double::sum).orElse(0);