- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
原始 map 似乎没有实现 java.util.Map
。
如果我有一个函数,接受 JDK Map 作为参数,现在想传递 eclipse 集合实现,例如 ByteObjectHashMap
,最简单的方法是什么?
它说 here ,那个包 org.eclipse.collections.impl.map.mutable
包含 MutableMap
接口(interface)的实现。 Primitive 在 mutable 的子包中,我希望它们实现 MutableMap
,而后者又实现 java.util.Map
。
最佳答案
今天完成此操作的最简单方法是复制 ByteObjectMap
的内容到 Map<Byte, Object>
使用 forEachKeyValue
.
这是一个转换 ByteObjectMap<String>
的例子至 Map<Byte, String>
.
@Test
public void byteObjectHashMapToMap()
{
ByteObjectMap<String> map =
ByteObjectMaps.mutable.<String>empty()
.withKeyValue((byte) 1, "1")
.withKeyValue((byte) 2, "2")
.withKeyValue((byte) 3, "3")
.withKeyValue((byte) 4, "4");
Map<Byte, String> target = new HashMap<>();
map.forEachKeyValue(target::put);
Map<Byte, String> expected = Map.of((byte) 1, "1",
(byte) 2, "2",
(byte) 3, "3",
(byte) 4, "4");
Assert.assertEquals(expected, target);
}
更新:Eclipse Collections 11.1 版本将有一个对象和原始映射的新方法,称为injectIntoKeyValue
。 .一旦发布,以下内容将成为可能的解决方案。
// Eclipse Collections MutableMap as target
Map<Byte, String> target =
map.injectIntoKeyValue(Maps.mutable.empty(), MutableMap::withKeyValue);
// JDK Map as target
Map<Byte, String> jdkTarget =
map.injectIntoKeyValue(new HashMap<>(),
(m, k, v) -> {m.put(k, v); return m;});
添加 Map
将是 OSS 社区的合理贡献原始 map 的 View ,但这还没有完成。这可能是因为这不是一项微不足道的工作。当 Project Valhalla 在 JDK 中可用时,Eclipse Collections 中的原始映射实现 Map<byte, String>
会更合理。 .如果没有对 Java 中泛型的原始专门化,这是不可能的。
您链接到的包文档指的是“相关包”,但这显然是值得澄清的,因为我可以看到它可能会让人感到困惑。感谢您指出这一点。
关于java - 如何将 ByteObjectHashMap 转换/改编为 JDK Map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71349112/
我是一名优秀的程序员,十分优秀!