2

原始地图似乎没有实现java.util.Map

例如,如果我有一个函数,接受 JDK Map 作为参数并且现在想要传递 eclipse 集合实现,ByteObjectHashMap那么最简单的方法是什么?

在这里声明,该包org.eclipse.collections.impl.map.mutable 包含MutableMap接口的实现。Primitive 位于 mutable 的子包中,我希望它们实现MutableMap,而后者又实现java.util.Map.

4

1 回答 1

3

今天实现这一点的最简单方法是将 的内容复制ByteObjectMapMap<Byte, Object>using forEachKeyValue

这是一个将 a 转换为 的ByteObjectMap<String>示例Map<Byte, String>

@Test
public void byteObjectHashMapToMap()
{
    Map<Byte, String> target = new HashMap<>();
    ByteObjectMap<String> map =
            ByteObjectMaps.mutable.<String>empty()
                    .withKeyValue((byte) 1, "1")
                    .withKeyValue((byte) 2, "2")
                    .withKeyValue((byte) 3, "3")
                    .withKeyValue((byte) 4, "4");

    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);
}

为原始地图添加视图将是 OSS 社区的合理贡献Map,但这还没有完成。这可能是因为这不是一项微不足道的工作。当 JDK 中提供了 Project Valhalla 时,Eclipse Collections 中的原始映射实现Map<byte, String>. 如果没有对 Java 泛型的原始专业化,这是不可能的。

您链接到的包文档是指“相关包”,但这显然是值得澄清的,因为我可以看到它可能会造成混淆。感谢您指出这一点。

于 2022-03-05T00:31:39.383 回答