gpt4 book ai didi

java - 将条目从一个 Multimap 复制到另一个

转载 作者:行者123 更新时间:2023-11-29 04:36:48 24 4
gpt4 key购买 nike

这个问题与来自 com.google.common.collect.Multimap 的 Multimap 有关。

我有一个Multimap,有没有更简单方便的方法将key以关键字开头的条目复制到另一个临时Multimap? - 以下是我目前的解决方案。

private Multimap<String, String> copyDesiredMetadata(Multimap<String, String> metadata)
{
Multimap<String, String> returnedMap = new CaseInsensitiveKeyMultimap<>();

// Iterate through the entries in the metadata
for (Map.Entry entry : metadata.entries()) {
String key =entry.getKey().toString();
// If the entry has the field key we are looking for add to returned map.
if (key.startsWith("AAA") || key.startsWith("BBB") || key.startsWith("CCC") || key.startsWith("DDD")) {
returnedMap.put(key, entry.getValue().toString());
}
}
return returnedMap;
}

最佳答案

我认为应该定义“更方便”,但这里是更实用的方法:

ImmutableMultimap<String, String> yourNewMap = metadata.entries()
.stream()
.filter(entry -> entry.getKey().matches("(AAA|BBB|CCC|DDD).*"))
.collect(Collector.of(ImmutableMultimap.Builder<String, String>::new,
ImmutableMultimap.Builder<String, String>::put,
(left, right) -> {
left.putAll(right.build());
return left;
},
ImmutableMultimap.Builder::build));

请注意,我使用了 ImmutableMultimap 而不是 CaseInsensitiveKeyMultimap,因为我不知道这个实现,但您应该能够轻松地适应它。

就个人而言,我会将收集器提取到一个实用程序类中,这样代码看起来会更清晰.......collect(MoreCollectors.toCaseInsensitiveKeyMultimap())

关于java - 将条目从一个 Multimap 复制到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41071042/

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