这个问题不难,我已经用自己的方法解决了,但我想听听你的意见,也许有什么方法可以让这成为一个改进的选择?Java 8-11。
Map<Set<String>, User> --> Map<String, User>
Map<String, User> result = new HashMap<>();
existingMap.forEach((set, user) -> set.forEach(item -> result.put(set, user)));
如果要使用收集器,可以先执行flatmap
,然后执行tomap
:
Map<String, User> result = existingMap.entrySet().stream().flatMap(
entry -> entry.getKey().stream()
.map(s -> Map.entry(s, entry.getValue()))
)
.collect(Collectors.toMap(Entry::getKey, Entry::getValue));
或者如果您只想使用collect
(这与您最初的方法更相似):
Map<String, User> result = existingMap.entrySet().stream().collect(
HashMap::new,
(map, entry) -> entry.getKey().forEach(x -> map.put(x, entry.getValue())),
HashMap::putAll
);
很抱歉重复了这个问题,但我的问题是其他的。我有一个从json-string解析到map的JSON解析器方法。但是json-string有一个值,这个值也是json-string。大概是这样的: 因此,我的解析方法: 我在客户端得到响应: ?但是随后我得到一个错误,IDE告诉我,是一个字符串。 那么,我如何用我的UserData获得这个LinkedHashMap呢?对不起,为了我的英语。谢谢你。
问题内容: 我想做这样的事情: 并让Foos保持在这样的表中: 更新: 我知道如何绘制其他实体的图,但是在许多情况下,这太过分了。似乎我所建议的是在没有创建另一个实体或以某个blob列中的所有内容结束的情况下是不可能的。 问题答案: 在Hibernate术语中,这是“值的集合”或“元素”。有一个(特定于Hibernate的)注释。JPA还不支持此功能。 简而言之,像这样注释您的收藏集: 这将创建带
我必须转换一个列表
我是Mapstruct的新手。我有一个Word对象,它包含一个字符串值和一组它自己,我想把它映射到WordDTO,它包含一个值和一组字符串值。我不知道怎么做。正如我在注释中所说,mapstruct不能映射两个对象是有道理的,但如果它有帮助,我将错误放在下面: 我为映射实现了这个接口: 谢谢你的帮助。
假设我有一个,我想替换一个值映射,例如: 顺便说一下,字符串也可以是多个字符