如何使用 Eclipse 集合将 MutableMap 转换为 ObjectDoubleMap?

How to convert MutableMap to ObjectDoubleMap using Eclipse Collections?

如何使用 Eclipse Collections 将 MutableMap<String, Double> 转换为 ObjectDoubleMap<String>

在我的用例中,我有一个聚合结果的可变映射。例如;

MutableMap<String, Double> map = list.aggregateBy(func, factory, aggregator);

我必须调用另一个只接受 ObjectDoubleMap<String> 的方法,如何将 map 转换为 ObjectDoubleMap<String> 的类型?我别无选择,只能使用 Eclipse Collections 框架。

首先,感谢您使用 Eclipse Collections!目前,将 MutableMap 转换为 ObjectDoubleMap 的最佳方法是使用 forEachKeyValue() 进行迭代并将键值设置为空 MutableObjectDoubleMap

MutableMap<String, Double> stringDoubleMutableMap = Maps.mutable.with("1", 1.0, "2", 2.0);
MutableObjectDoubleMap<String> targetMap = ObjectDoubleMaps.mutable.empty();
stringDoubleMutableMap.forEachKeyValue((key, value) -> targetMap.put(key, value));

将来我们可以考虑添加一个 API,这将使从 RichIterable<BoxedPrimitive>PrimitiveIterable 的转换更容易。

欢迎在 Eclipse Collections GitHub Repo with the API which you would like to have. This helps us track feature requests by our users. Eclipse Collections is open for contributions as well, feel free to contribute the API which you would like: Contribution Guide 上提出问题。

根据评论更新答案,lambda 可以简化为方法参考:

stringDoubleMutableMap.forEachKeyValue(targetMap::put);

注意:我是 Eclipse Collections 的提交者。