1

我正在寻找Java中不可变树映射的实现,它允许通过共享相同部分进行写时复制样式修改。因此,本质上,ImmutableJS对 JavaScript 所做的正是 Java。

如果有人碰巧不熟悉 ImmutableJS 的工作原理,我希望它在 Java 中是这样的:

ImmutableTreeMap<String, String> map = new ImmutableTreeMap<>();
ImmutableTreeMap<String, String> map1 = map.put("hello", "world");
ImmutableTreeMap<String, String> map2 = map1.put("foo", "bar");
// the base maps should still remain the same
assertEquals(0, map.size());
assertEquals(1, map1.size());

在上面的示例中,map2不会复制存储树的部分hello -> world,它会重新使用该部分。

有没有这样的实现,还是我必须从头开始创建一个?

4

1 回答 1

3

您正在寻找“持久”哈希映射,也称为“哈希数组映射树”。

应该注意的是,“树”与“trie”数据结构不同。

你会发现一些 java HAMT,包括来自 paguro、pcollections 和 javaslang 项目的那些,或者你可以使用为 jvm 编译的 clojure 或 scala 中的规范。

于 2017-03-02T20:12:15.713 回答