-2
私は論文のリストを持っており、各論文にはキーワードが割り当てられています。私はすべての論文にその頻度のキーワードと総計を格納するMapを取得したいと思います。私は次のように実装しました:地図の重複キー
public Map<Keyword, Integer> getKeywordFrequencies(List<Integer> userPapers,
Map<Integer, List<PaperKeywordMapping>> paperKeywords) {
Map<Keyword, Integer> frequencies = new HashMap<>();
for (Integer ind : userPapers) {
for (PaperKeywordMapping pKeyword : paperKeywords.get(ind)) {
frequencies.compute(pKeyword.getKeyword(), (k, v) -> {
return v == null ? pKeyword.getTermFrequency() : v + pKeyword.getTermFrequency();
});
}
}
frequencies.forEach((k,v)->System.out.println("keyword : " + k.getKeywordName() + " freq : " + v));
return frequencies;
}
問題は、私はマップ内で一意のキーを取得していません。ここに出力されます:
keyword : Nonfiction freq : 60
keyword : Reference freq : 38
keyword : Sports freq : 263
keyword : Arts freq : 90
keyword : Astronomy freq : 50
keyword : Medicine freq : 16
keyword : Applied freq : 31
keyword : History freq : 106
keyword : Discrete freq : 47
keyword : microeconomics freq : 68
keyword : macroeconomics freq : 41
keyword : Nonfiction freq : 99
keyword : Reference freq : 101
keyword : Sports freq : 262
keyword : Arts freq : 126
keyword : Astronomy freq : 58
keyword : Medicine freq : 31
キーが存在するかどうかを確認するために試してみましたが、それでも同じです。
何か助けていただければ幸いです。
一意のキーを保証するためにセットを使用 – Alfabravo
キーワードオブジェクトは適切な 'equals'メソッドを実装する必要があります。 – Marvin
@Marvin、実装は既にあります。 – Cap