Java的不可变树映射



我正在寻找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的部分,它会重用该部分。

是否有这样的实现可用,或者我必须从头开始创建一个?

您正在寻找一个'持久'哈希映射,也称为'哈希数组映射树'。

需要注意的是,'tree'和'trie'数据结构是不一样的。

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

相关内容

  • 没有找到相关文章

最新更新