gpt4 book ai didi

java - 使用 Java 8 流迭代对象属性

转载 作者:行者123 更新时间:2023-11-29 08:34:19 26 4
gpt4 key购买 nike

我有一个 ListPublication对象,我想得到相应的 PublicationKeyword对于每个 Publication到 map 的形式:Map<Integer, Map<Keyword, Integer>> ,其中外部映射的键是 Publication 的 ID来自列表,值是一个映射,其中键是 keyword对象和 integer是它的频率。

目前,我是这样做的:

public Map<Integer, Map<Keyword, Integer>> getFrequencies(List<Publication> publications) {
Map<Integer, Map<Keyword, Integer>> resultSet = new HashMap<>();
for (Publication publication : publications) {
Map<Keyword, Integer> frequencyMappings = new HashMap<>();
for (PublicationKeyword pubKeyword : publication.getPublicationKeyword()) {
frequencyMappings.put(pubKeyword.getKeyword(), pubKeyword.getConceptFrequency());
}
resultSet.put(publication.getIdPaper(), frequencyMappings);
}
return resultSet;
}

但是,问题是我想使用 Java 8 流来实现这一点。有可能完成吗?如果是,那么正确的方法是什么?令我困惑的事情:嵌套的 for 循环和 for 内的变量声明。

最佳答案

应该这样做:

return publications.stream()
.collect(Collectors.toMap(
Publication::getIdPaper,
publication -> publication.getPublicationKeyword()
.stream()
.collect(Collectors.toMap(
PublicationKeyword::getKeyword,
PublicationKeyword::getConceptFrequency))));

关于java - 使用 Java 8 流迭代对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45496247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com