Java的不可变树图?

时间:2016-10-19 15:23:25

标签: java treemap immutable.js immutable-collections

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

是否有任何此类实施可用,或者我是否必须从头开始创建一个?

1 个答案:

答案 0 :(得分:2)

你正在寻找一个持久的&#39;哈希映射,也称为&#39;哈希数组映射trie&#39;。

应该注意一棵树&#39;与&#39; trie&#39;并不是一回事。数据结构。

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