我正在尝试在已选文章中计算关键词的出现次数。我可以在Java 7中做到这一点,但在Java 8中有些困难。
结构如下。
关键词类
public class Keyword {
private String word;
private int value;
}
文章类
public class Article {
private Set<Keyword> keywordsList;
private boolean selected;
}
如何统计我拥有A、B、C等关键字的次数
Map<Keyword,Integer> occurrenceMapping = new HashMap<>();
final Set<Article> articleSetFiltered = articleSet.stream()
.filter(a -> a.isSelected())
.collect(Collectors.toSet());
for(Article a : articleSetFiltered) {
for(Keyword k : a.getKeywordsList()) {
if(!occurrenceMapping.containsKey(k)) {
occurrenceMapping.put(k,1);
}
else{
final int occurrence = occurrenceMapping.get(k);
occurrenceMapping.put(k,occurrence+1);
}
}
}
我开始尝试这样做。还在努力尝试中,但不确定是否朝着正确的方向前进:/如果有人能指导我正确的方向,那将是太好了!
Map<Keyword,Integer> occurenceMappingBis = articleSetFiltered = articleSet.stream()
.filter(a -> a.isSelected())
.forEach(
article -> article.getKeywordsList()
.stream().collect(Collectors.groupingBy(keyword -> keyword, Collectors.counting()))
);